ホームページ >バックエンド開発 >C++ >インライン関数定義をヘッダー ファイルに配置する必要があるのはなぜですか?

インライン関数定義をヘッダー ファイルに配置する必要があるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-08 05:05:09538ブラウズ

Why Must Inline Function Definitions Be Placed in Header Files?

インライン関数定義がヘッダー ファイルに存在する理由

C では、クラス メンバー関数をインラインとして宣言するには、ヘッダー ファイル内での実装が必要です。この要件は、インライン関数の「1 つの定義ルール (ODR)」から生じており、関数を使用するすべての翻訳単位に同一の定義が存在することが義務付けられています。

ODR の遵守を保証する最も簡単な方法は、定義を含めることです。すべての翻訳単位にアクセスできるヘッダー ファイル内。そうすることで、コンパイラは関数が呼び出されるすべてのインスタンスで同じ定義を見つけて使用できます。

インライン定義を .cpp ファイルに配置しようとすると、未解決の外部シンボル エラーが発生します。これは、コンパイラが関数定義が呼び出される翻訳単位で関数定義を見つけることができないために発生します。

繰り返しになりますが、ヘッダー ファイル内のインライン関数定義により、すべての翻訳単位に同一の定義が存在することが保証され、ODR 準拠が促進されます。ただし、関数をインラインで宣言しても、コンパイラによる関数のインライン化が保証されるわけではないことに注意することが重要です。

以上がインライン関数定義をヘッダー ファイルに配置する必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。