extern inline について
C プログラミング言語では、インライン関数は、関数本体を直接挿入することでコードを最適化できる可能性があるというヒントをコンパイラーに提供します。別のサブルーチンを生成するのではなく、呼び出し時点でcall.
インライン バリエーションの違い
K&R C と C89 では、インラインの標準セマンティクスはありませんでしたが、多くのコンパイラーがさまざまな解釈でインラインをサポートしていました。 GCC では、inline、static inline、extern inline の 3 つのバリエーションが導入されました。
C99 と GNU99
C99 では、extern inline のセマンティクスが GNU89 のインライン動作を反映するように改訂されました。インラインと静的インラインは同じままでした。
C
C では、インライン関数は使用されるすべての場所で同じ定義を持つ必要があります。同じシンボルの複数の定義は、コンパイラ/リンカによって処理されます。 static inline も extern inline も C では定義されていませんが、一部のコンパイラはそれらをサポートしている可能性があります。
extern inline によるインライン化の確保
インライン化が必要な特定のシナリオFILE と LINE を使用する関数の場合マクロの場合、extern inline は関数がインライン化されることを保証しません。ただし、これは、この望ましい動作を実現するのに最も近い C99 と同等です。関数がインライン化されない場合、コンパイラーまたはリンカーはエラーを発行する可能性があります。
コンパイラーとベンダーの違い
コンパイラーのベンダーやバージョンが異なると動作が異なる場合があります。ご使用の環境に応じた特定のドキュメントを参照することを常にお勧めします。
以上がC と C の「inline」、「static inline」、「extern inline」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。