ホームページ >バックエンド開発 >C++ >静的データ メンバーに C での外部定義が必要なのはなぜですか?

静的データ メンバーに C での外部定義が必要なのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-17 01:52:25352ブラウズ

Why Do Static Data Members Need External Definitions in C  ?

静的データ メンバーに外部定義が必要な理由

IBM C のドキュメントには、クラス内で宣言された静的データ メンバーは実際の定義ではないと記載されており、名前空間スコープで外部的に定義する必要があります。この要件は、「1 つの定義ルール」として知られる C の基本的なルールに従います。

1 つの定義ルールの役割

1 つの定義ルールにより、すべての静的ルールが保証されます。オブジェクト (参照されている場合) はプログラム内で 1 回だけ定義されます。このルールは、クラス定義が複数のソース ファイルに分散され、ヘッダー ファイルを介してインクルードされることが多い C では重要になります。

複数の定義の回避

静的データ メンバー宣言がヘッダーが定義とみなされていた場合、ヘッダー ファイルを含むすべての翻訳単位 (ソース ファイル) に複数の定義が存在することになります。これは、One Definition Rule に違反し、コンパイル エラーを引き起こす可能性があります。

外部定義の必要性

この問題を回避するために、静的データ メンバーはクラス宣言内で定義されず、提供されます。クラス外の外部定義として。このようにして、コンパイラは、クラスが別のモジュールに含まれる回数に関係なく、プログラムで使用される静的データ メンバーごとに定義が 1 つだけ存在することを保証できます。

外部定義の代替

理論的には、C はインライン関数と同様に静的データ メンバーの複数の定義を処理し、それらを 1 つの定義に統合できます。ただし、この言語はこの動作を実装していないため、静的データ メンバーの外部定義を使用する必要があります。

以上が静的データ メンバーに C での外部定義が必要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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