ホームページ > バックエンド開発 > C++ > C 定義をヘッダー ファイルに入れるのは本当に世界共通の標準ですか?

C 定義をヘッダー ファイルに入れるのは本当に世界共通の標準ですか?

Linda Hamilton
リリース: 2024-11-23 20:53:15
オリジナル
940 人が閲覧しました

Is Putting C   Definitions in Header Files Truly the Universal Norm?

C 定義をヘッダー ファイルに配置するのは世界共通の標準ですか?

ユーザーのプログラミング スタイルでは、クラス宣言はインクルード ファイルに格納され、定義はインクルード ファイルに格納されることが規定されています別々の .cpp ファイルに存在します。このアプローチは、記事「C ヘッダー ファイル、コード分離」の中で広く評価されている Loki の回答で概説されている原則と一致しています。

しかし、ある同僚は、C 宣言は通常、同じヘッダー ファイル内の定義を包含する必要があると主張しています。彼は、これが普遍的に採用されている現代の慣行であると主張しています。

この慣行の蔓延を検証する

この主張の正当性を確認するために、以下で観察される一般的な慣行を調べてみましょう。の

回答

あなたの同僚の主張は間違っています。コードを .cpp ファイル (またはその他の指定された拡張子) に保持し、宣言をヘッダーに保持することが広く行われてきました。

コードをヘッダーに配置すると、コンパイラのインライン化が強化されるなど、利点が得られる場合もあります。また、インクルード時にコードが繰り返し処理されるため、コンパイル時間が長くなる可能性もあります。さらに、ヘッダー内にコードが含まれている場合、オブジェクトの循環関係が複雑になる可能性があります。

要約すると、コードと宣言を分離するという一般的な慣行は、同僚の主張とは異なり、あなたの好みに沿ったものです。

例外と説明

テンプレートでは注目すべき例外が 1 つ発生します。 boost のような最新のライブラリはテンプレートを多用しており、「ヘッダーのみ」のアプローチを頻繁に採用しています。ただし、これはテンプレートに特に適用できる固有のシナリオです。

ヘッダーのみのコードの欠点

ヘッダーのみのコードを記述する場合の欠点を考慮することが重要です。

  • Boost によるコンパイル時間の短縮に関する議論から明らかなように、コンパイル時間の延長Asio.
  • グローバル オブジェクトなどの特定の要素は、シングルトンや他の問題のある解決策に頼らずにヘッダーのみのライブラリに実装することはできません。
  • 増分コンパイルの利点が失われ、その結果、再コンパイル時間が長くなります。たとえ些細なことでも

結論

C では、宣言と定義を分離するという従来の手法が依然として主流です。ヘッダーのみのコードが有益な特定のシナリオもありますが、その制限を理解し、慎重に使用することが重要です。ヘッダーのみの定義が普遍的に採用されているという主張には根拠がなく、コードと宣言を分離するという確立された慣行を維持することをお勧めします。

以上がC 定義をヘッダー ファイルに入れるのは本当に世界共通の標準ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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