静的データ メンバーに外部定義が必要な理由
IBM C のドキュメントには、クラス内で宣言された静的データ メンバーは実際の定義ではないと記載されており、名前空間スコープで外部的に定義する必要があります。この要件は、「1 つの定義ルール」として知られる C の基本的なルールに従います。
1 つの定義ルールの役割
1 つの定義ルールにより、すべての静的ルールが保証されます。オブジェクト (参照されている場合) はプログラム内で 1 回だけ定義されます。このルールは、クラス定義が複数のソース ファイルに分散され、ヘッダー ファイルを介してインクルードされることが多い C では重要になります。
複数の定義の回避
静的データ メンバー宣言がヘッダーが定義とみなされていた場合、ヘッダー ファイルを含むすべての翻訳単位 (ソース ファイル) に複数の定義が存在することになります。これは、One Definition Rule に違反し、コンパイル エラーを引き起こす可能性があります。
外部定義の必要性
この問題を回避するために、静的データ メンバーはクラス宣言内で定義されず、提供されます。クラス外の外部定義として。このようにして、コンパイラは、クラスが別のモジュールに含まれる回数に関係なく、プログラムで使用される静的データ メンバーごとに定義が 1 つだけ存在することを保証できます。
外部定義の代替
理論的には、C はインライン関数と同様に静的データ メンバーの複数の定義を処理し、それらを 1 つの定義に統合できます。ただし、この言語はこの動作を実装していないため、静的データ メンバーの外部定義を使用する必要があります。
以上が静的データ メンバーに C での外部定義が必要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。