Was ist der Unterschied zwischen a static inline
, extern inline
und ein normales inline
Funktion?
Ich habe einige vage Erklärungen dazu gesehen. Soweit ich verstanden habe, static inline
ist nicht nur ein inline
Funktion, die nur innerhalb einer bestimmten Datei als bezeichnet werden soll static
Schlüsselwort bedeutet normalerweise. Das gleiche gilt für extern inline
Auch ich denke, es ist nicht die gleiche Erklärung wie mit extern
Variablen. Alle Antworten würden sehr geschätzt!
Eine Funktionsdefinition mit static inline
definiert eine Inline-Funktion mit interner Verknüpfung. Eine solche Funktion funktioniert “wie erwartet” von den “üblichen” Eigenschaften dieser Qualifizierer: static
gibt es interne Verknüpfung und inline
macht es inline. Diese Funktion ist also “lokal” für eine Übersetzungseinheit und darin eingebettet.
Eine Funktionsdefinition mit just inline
definiert eine Inline-Funktion mit externer Verknüpfung. Eine solche Definition wird jedoch als bezeichnet Inline-Definition und es funktioniert nicht so externe Definition für diese Funktion. Das bedeutet, dass diese Funktion, obwohl sie eine externe Verknüpfung hat, als solche angesehen wird nicht definiert aus anderen Übersetzungseinheiten, es sei denn, Sie geben eine separate an externe Definition dafür irgendwo.
Eine Funktionsdefinition mit extern inline
definiert eine Inline-Funktion mit externer Verknüpfung und gleichzeitig dient diese Definition als externe Definition für diese Funktion. Es ist möglich, eine solche Funktion von anderen Übersetzungseinheiten aufzurufen.
Die letzten beiden Absätze bedeuten, dass Sie die Wahl haben, eine Single bereitzustellen extern inline
Definition für eine Inline-Funktion mit externer Verknüpfung oder Bereitstellung von zwei separaten Definitionen dafür: eine inline
und andere extern
. Im letzteren Fall darf der Compiler beim Aufruf der Funktion eine der beiden Definitionen auswählen.
mögliches Duplikat: stackoverflow.com/questions/7762731/…
– Benutzer1551592
28. Juli 2014 um 17:13 Uhr
alle sind Inline-Funktionen. static inline ist wo eine statische Funktion ist, extern inline ist eine extern deklarierte Funktion, normal inline ist einfach normal.
– MAKZ
28. Juli 2014 um 17:14 Uhr
mögliches Duplikat: stackoverflow.com/questions/216510/extern-inline
– Hsi-Hung Shih
28. Juli 2014 um 17:15 Uhr
Lesen Sie auch stackoverflow.com/a/7767858/2204022
– MAKZ
28. Juli 2014 um 17:15 Uhr
Mögliches Duplikat von extern inline
– o11c
8. Juli 2018 um 6:43 Uhr