C での変数の複数の定義
C プロジェクトで複数のファイルを操作する場合、変数の複数の定義に関連するエラーが発生する可能性があります。次の状況を考えてみましょう:
FileA.cpp:
#include "FileA.h" int main() { hello(); return 0; } void hello() { //code here }
FileA.h:
#ifndef FILEA_H_ #define FILEA_H_ #include "FileB.h" void hello(); #endif /* FILEA_H_ */
FileB.cpp:
#include "FileB.h" void world() { //more code; }
FileB.h:
#ifndef FILEB_H_ #define FILEB_H_ int wat; void world(); #endif /* FILEB_H_ */
これをコンパイルしようとするとコードを実行すると、「`wat' の複数の定義」というエラーが発生する可能性があります。
説明:
グローバル変数 wat を定義したためにエラーが発生します。コンパイル単位で 2 回実行します。 FileA.h と FileB.h の両方に wat の宣言が含まれており、グローバル スコープで 2 回定義されています。
解決策:
この問題を解決するには、次の手順に従ってください。手順:
FileB.h:
extern int wat;
FileB.cpp:
int wat = 0;
で extern を使用するFileB.h では、wat という名前の変数が別の場所に存在することをコンパイラーに通知します。この場合、FileB.cpp の初期化子を使用して実際の変数を定義します。
このアプローチにより、wat がグローバル スコープ内で 1 回宣言されることが保証され、複数定義エラーが排除されます。
以上がC での「変数の複数定義」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。