ホームページ > バックエンド開発 > C++ > C と C の「inline」、「extern inline」、「static inline」の違いは何ですか?

C と C の「inline」、「extern inline」、「static inline」の違いは何ですか?

Barbara Streisand
リリース: 2024-12-24 04:14:15
オリジナル
574 人が閲覧しました

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

extern inline は何をしますか?

inline や static inline とは異なり、extern inline は特定のコンテキストで使用されます:

C99 以前のコンパイラ、特に GCC では、インラインには定義されたセマンティクスがありませんでした。ただし、GCC は、可能であれば関数をインライン化するためのコンパイラーへのヒントとしてインライン実装しました。この提案にもかかわらず、関数のアウトオブライン バージョンが常に発行され、外部から見える状態のままでした。

この制限に対処するために、GCC は extern inline と static inline を導入しました。

GNU89:

  • インライン:インライン化されますが、アウトオブライン バージョンは常に出力され、外部から参照できます。
  • extern inline: アウトオブライン バージョンは生成されませんが、別のコンパイルから呼び出すことができます。 unit.
  • static inline: 外部から見えるアウトオブラインバージョンを生成しませんが、ファイル静的ファイルを生成する可能性があります。

C99 (または GNU99):

  • inline: GNU89 extern inline と同様、外部から見える関数はありません
  • extern inline: GNU89 インラインと同様に、外部から見えるコードが出力され、1 つの翻訳単位のみがそれを使用できます。
  • static inline: GNU89 static inline と同様、外部シンボルはありませんまたはいずれかの呼び出しが発行されます。

C :

  • インライン関数は、すべてのコンパイル単位で同一に定義する必要があります。
  • extern inline または static inline の標準定義はありませんが、一部のコンパイラは、以下に基づいてこれらの構造を提供します。 GNU89 モデル。

以上がC と C の「inline」、「extern inline」、「static inline」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート