C での変数の複数の定義
「ワットの複数の定義」というコンパイル時エラーが発生すると、混乱する可能性があります。提供されたソース コードを分析して問題を特定しましょう。
コードには、FileA.cpp、FileA.h、FileB.cpp、FileB.h の 4 つのファイルがあります。コンパイル時に、コンパイラは wat という名前の変数の複数の定義を検出します。
検査すると、FileA.h と FileB.h の両方で変数 wat が定義されています。
// FileA.h void hello(); #endif /* FILEA_H_ */ // FileB.h int wat; void world(); #endif /* FILEB_H_ */
コードがコンパイルされると、ヘッダー ファイルがコンパイル単位に複数回インクルードされ、変数 wat の定義が重複することになります。この問題を解決するには、wat の宣言をその定義から分離する必要があります。
解決策:
extern int wat;
これは、ワットが定義されることをコンパイラーに通知します。
int wat = 0;
これで、コンパイル時に、コンパイラーは wat が FileB.h で宣言され定義されているものとして正しく識別されます。 FileB.cpp で、複数定義エラーを解決します。
以上がC で「'wat' の複数の定義」というコンパイル時エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。