ホームページ >バックエンド開発 >C++ >C コードで静的変数のリンク エラーが発生するのはなぜですか?

C コードで静的変数のリンク エラーが発生するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-16 01:24:10311ブラウズ

Why Am I Getting a Static Variable Linking Error in My C   Code?

C での静的変数リンク エラー

C コードをコンパイルするとき、特に Mac で、「静的変数リンク エラー」が発生することがあります。提供されたコード スニペットで報告されているものと同様です。このエラーは通常、外部 (*.cpp ファイル内) で適切に定義されていない静的変数を参照しようとしたときに発生します。

問題の原因

提供されたコードでは、静的変数「theString」が「Log.h」ヘッダー ファイルで宣言されていますが、定義されていません。静的変数には、メモリを予約して初期化するために、対応する *.cpp ファイルに外部定義が必要です。

解決策

リンク エラーを解決するには、次の定義を追加できます。図に示すように、「theString」を「Log.cpp」ファイルに追加します。以下:

// Log.cpp

string Log::theString; // Define the static string here

追加の推奨事項

静的変数を外部で定義することに加えて、「using namespace std;」の使用を避けることもお勧めします。ヘッダーファイルにあります。この行為は名前空間の汚染につながり、将来的にコードのデバッグや保守が困難になる可能性があります。

以上がC コードで静的変数のリンク エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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