静的メンバーへの未定義の参照: コンパイルの問題の解決
C で静的メンバーを使用する場合、特にクロス コンパイラーを使用している場合、 「静的メンバーへの未定義の参照」というエラーが発生する場合があります。このエラーは、ソース ファイルに静的メンバー変数の定義がないために発生します。この問題を解決するには、次の手順に従います。
問題を理解する
この例では、クラス WindowsTimer 内に静的メンバー変数 _frequency を定義しました。ただし、実際のデータは別のソース ファイル (.cpp ファイル) で定義されていません。これがコンパイル エラーの根本原因です。
解決策: 静的メンバーの定義
エラーを修正するには、通常は別のソース ファイルで静的メンバー変数を定義します。 .cpp ファイル。例:
// WindowsTimer.cpp LARGE_INTEGER WindowsTimer::_frequency;
この定義により、静的変数にメモリが割り当てられ、コンパイラがリンク段階でそれを参照できるようになります。
外部定義が必要な理由
静的メンバーを使用する場合、その定義はクラス宣言の外部にある必要があることを理解することが重要です。これは、コードを生成してオブジェクト ファイルをリンクする前に、コンパイラが静的メンバーの完全な定義を必要とするためです。
ヘッダー ファイルに定義を配置しないでください
誘惑に負けるかもしれませんが、アクセスを容易にするためにヘッダー ファイル (.h ファイル) 内に静的メンバーを定義することは、良い習慣ではありません。ヘッダー ファイルを複数インクルードすると、静的変数が複数定義され、リンカー エラーや未定義の動作が発生する可能性があります。
以上がC の静的メンバーへの未定義の参照: コンパイルの問題を解決するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。