Was ist der Unterschied zwischen static inline, extern inline und eine normale inline-Funktion?
Was ist der Unterschied zwischen einem static inline
, extern inline
und eine normale inline
Funktion?
Ich habe gesehen, einige vage Erläuterungen über dieses. Soweit ich das verstanden hab, static inline
ist nicht nur ein inline
Funktion, soll nur verwiesen werden, innerhalb einer bestimmten Datei als static
Stichwort bedeutet in der Regel. Das gleiche gilt für extern inline
auch ich denke, es ist nicht die gleiche Erklärung wie bei extern
Variablen. Alle Antworten wäre sehr dankbar!
mögliche Duplikate von: stackoverflow.com/questions/7762731/...
alle inline-Funktionen. statische inline-wo ist ein statische - Funktion extern inline ist eine extern deklarierte Funktion, normale inline ist einfach normal.
mögliche Duplikate von: stackoverflow.com/questions/216510/extern-inline
Lesen Sie auch stackoverflow.com/a/7767858/2204022
Mögliche Duplikate von extern inline
alle inline-Funktionen. statische inline-wo ist ein statische - Funktion extern inline ist eine extern deklarierte Funktion, normale inline ist einfach normal.
mögliche Duplikate von: stackoverflow.com/questions/216510/extern-inline
Lesen Sie auch stackoverflow.com/a/7767858/2204022
Mögliche Duplikate von extern inline
InformationsquelleAutor Forever a noob | 2014-07-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Definition einer Funktion mit
static inline
definiert eine inline-Funktion mit der internen Verknüpfung. So funktioniert "wie erwartet" von der "üblichen" Eigenschaften dieser Qualifier:static
gibt es interne Verlinkung undinline
macht es inline. Also, diese Funktion "local", um eine übersetzungseinheit und inline.Definition einer Funktion mit nur
inline
definiert eine inline-Funktion mit externer Verlinkung. Jedoch, diese definition ist bezeichnet als inline-definition und es funktioniert nicht wie externe definition für diese Funktion. Das bedeutet, dass, obwohl diese Funktion hat externe Bindung, es wird als undefined aus anderen übersetzungseinheiten, es sei denn, Sie bieten einen separaten externe definition es irgendwo.Definition einer Funktion mit
extern inline
definiert eine inline-Funktion mit externer Verknüpfung und gleichzeitig diese definition dient als externe definition für diese Funktion. Es ist möglich, nennen eine solche Funktion auch von anderen übersetzungseinheiten.Die letzten beiden Absätze bedeuten, dass Sie eine Wahl, von der Bereitstellung eines einzelnen
extern inline
definition einer inline-Funktion mit externer Verlinkung, oder die Bereitstellung von zwei separaten Definitionen: eineinline
und andereextern
. Im letzteren Fall, wenn Sie die Funktion aufrufen der compiler darf wählte der beiden Definitionen.extern inline void f();
, die aussieht (und ist) eine Erklärung, hat den Effekt der Umwandlung einer frühereninline void f() { ..... }
eine externe definition, anstatt eine inline-definition für diese Einheit. (Ref. C11 6.7.4/7).Lesen Sie diese Antwort, ich habe Probleme mit dem Verständnis der genauen Bedeutung von "externen definition" vs "interne definition". Wo finde ich mehr dazu?
InformationsquelleAutor AnT