C での変数の複数の定義
C では、変数を複数回定義するとコンパイル エラーが発生する可能性があります。この問題は、複数のファイルにヘッダー ファイルが含まれ、同じ変数が複数定義される場合に発生する可能性があります。
次のシナリオを考えてみましょう:
// FileA.cpp #include "FileA.h" int main() { hello(); return 0; }
// FileA.h #ifndef FILEA_H_ #define FILEA_H_ void hello(); #endif
// FileB.cpp #include "FileB.h"
// FileB.h #ifndef FILEB_H_ #define FILEB_H_ int wat; void world(); #endif
このコードをコンパイルすると、FileA.h と FileB.h の両方で変数が定義されているため、「wat' の複数の定義」というエラーが発生する可能性があります。 wat`.
解決策:
この問題を解決するには、extern キーワードを使用できます。このキーワードは、変数がプログラム内の他の場所に存在するものとして宣言し、変数が複数回定義されるのを防ぎます。
// FileB.h extern int wat;
// FileB.cpp int wat = 0;
FileB.h で wat を extern として宣言することにより、基本的にコンパイラに次のことを伝えます。 wat の定義は別のファイル (この場合は FileB.cpp) に存在します。これにより、変数が複数定義されることがなくなり、エラーなしでコンパイルを続行できるようになります。
以上がC でヘッダー ファイルを複数インクルードすると「複数定義」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。