ホームページ > バックエンド開発 > C++ > C の静的メンバーへの未定義の参照: コンパイルの問題を解決するには?

C の静的メンバーへの未定義の参照: コンパイルの問題を解決するには?

Susan Sarandon
リリース: 2024-12-28 20:40:18
オリジナル
776 人が閲覧しました

Undefined Reference to Static Member in C  : How to Resolve Compilation Issues?

静的メンバーへの未定義の参照: コンパイルの問題の解決

C で静的メンバーを使用する場合、特にクロス コンパイラーを使用している場合、 「静的メンバーへの未定義の参照」というエラーが発生する場合があります。このエラーは、ソース ファイルに静的メンバー変数の定義がないために発生します。この問題を解決するには、次の手順に従います。

問題を理解する

この例では、クラス WindowsTimer 内に静的メンバー変数 _frequency を定義しました。ただし、実際のデータは別のソース ファイル (.cpp ファイル) で定義されていません。これがコンパイル エラーの根本原因です。

解決策: 静的メンバーの定義

エラーを修正するには、通常は別のソース ファイルで静的メンバー変数を定義します。 .cpp ファイル。例:

// WindowsTimer.cpp

LARGE_INTEGER WindowsTimer::_frequency;
ログイン後にコピー

この定義により、静的変数にメモリが割り当てられ、コンパイラがリンク段階でそれを参照できるようになります。

外部定義が必要な理由

静的メンバーを使用する場合、その定義はクラス宣言の外部にある必要があることを理解することが重要です。これは、コードを生成してオブジェクト ファイルをリンクする前に、コンパイラが静的メンバーの完全な定義を必要とするためです。

ヘッダー ファイルに定義を配置しないでください

誘惑に負けるかもしれませんが、アクセスを容易にするためにヘッダー ファイル (.h ファイル) 内に静的メンバーを定義することは、良い習慣ではありません。ヘッダー ファイルを複数インクルードすると、静的変数が複数定義され、リンカー エラーや未定義の動作が発生する可能性があります。

以上がC の静的メンバーへの未定義の参照: コンパイルの問題を解決するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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