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 サイトの他の関連記事を参照してください。