extern inline の役割を理解する
インライン関数は、コンパイラーが次のコードを直接挿入できるようにすることで、コードのパフォーマンスを最適化するための貴重なツールです。関数を呼び出しコードに組み込むことで、関数呼び出しのオーバーヘッドを排除します。ただし、インライン関数は引き続きリンク可能なオブジェクト コードを生成し、他のモジュールがそれらを参照できるようにする可能性があります。
extern inline と inline および static inline の比較
C99 以前の C では、 inline キーワードは、さまざまなコンパイラによって拡張機能として実装されました。 GNU の実装では、inline、static inline、extern inline の 3 つの構造が導入されました。インライン関数はコンパイラの裁量でインライン化される可能性がありますが、常にリンク可能なオブジェクト コードを生成します。
対照的に、extern インライン関数はインライン化されたときにリンク可能なオブジェクト コードを生成しませんでした。これは、これらの関数が他のモジュールから参照できないことを意味し、コードベース全体で一貫してインライン化されることが保証されます。一方、
静的インライン関数は、外部から見えるオブジェクト コードを生成しませんでした。これにより、複数のモジュール間で調整する必要がなく、単一モジュール内での内部使用に適しています。
関数のインライン化の確保
シナリオ内で、関数がインライン化されており、FILE マクロと LINE マクロの使用が必要であること、 extern inline では十分ではありません。利用可能な場合は、コンパイラがアウトオブライン バージョンを呼び出すことを選択できます。
確実にインライン化するには、次の手法を組み合わせて使用できます。
コンパイラとバージョン間の違い
extern inline の動作はコンパイラによって異なります。ベンダーとバージョン。一部のコンパイラはこれをサポートしていない場合がありますが、他のコンパイラは異なる規則に従っている場合があります。使用している特定のコンパイラのドキュメントを参照することをお勧めします。
C では、インライン関数は、使用されるすべての翻訳単位で完全に定義する必要があります。したがって、extern inline と static inline は C の場合と同じ意味を持ちません。
以上がExtern Inline vs. Inline および Static Inline: それぞれをいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。