Heim >Backend-Entwicklung >C++ >Was ist der Unterschied zwischen „inline', „extern inline' und „static inline' in C und C?

Was ist der Unterschied zwischen „inline', „extern inline' und „static inline' in C und C?

Barbara Streisand
Barbara StreisandOriginal
2024-12-24 04:14:15579Durchsuche

What's the Difference Between `inline`, `extern inline`, and `static inline` in C and C  ?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn