Was macht Extern Inline?
Im Gegensatz zu Inline und Static Inline wird Extern Inline in einem bestimmten Kontext verwendet:
In Compilern vor C99, insbesondere GCC, hatte Inline keine definierte Semantik. Die Inline-Implementierung von GCC dient jedoch als Hinweis für den Compiler, die Funktion nach Möglichkeit zu inline. Trotz dieses Vorschlags wurde immer eine Out-of-Line-Version der Funktion ausgegeben und blieb von außen sichtbar.
Um diese Einschränkung zu beheben, führte GCC externes Inline und statisches Inline ein.
GNU89:
-
inline: Kann inline sein, aber ein Out-of-Line-Version wird immer ausgegeben und ist extern sichtbar.
-
extern inline: Erzeugt keine Out-of-Line-Version, kann aber eine von einer anderen Kompilierungseinheit aufrufen.
-
statisch inline: Erzeugt keine extern sichtbare Out-of-Line-Version, kann aber eine statische Datei erzeugen eins.
C99 (oder GNU99):
-
inline: Ähnlich wie GNU89 extern inline, keine von außen sichtbare Funktion wird ausgegeben.
-
extern inline: Ähnlich wie Bei GNU89 inline wird ein extern sichtbarer Code ausgegeben, der nur von einer Übersetzungseinheit verwendet werden kann.
-
statisch inline: Ähnlich wie bei GNU89 static inline wird kein externes Symbol oder Aufruf dazu ausgegeben.
C :
- Inline-Funktionen müssen in allen Kompilierungseinheiten identisch definiert werden.
- Es gibt keine Standarddefinition für externes Inline oder statisches Inline, aber einige Compiler stellen diese Konstrukte basierend auf bereit das GNU89-Modell.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „inline', „extern inline' und „static inline' in C und C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!