C プロジェクトにおける 'wat' の複数の定義
指定されたコードは、FileA.cpp、FileA.h、 FileB.cpp、および FileB.h。コンパイルすると、「`wat' の複数の定義」を示すエラーが発生します。
FileB.h は、次のように 'wat' という名前の整数変数を定義します。
#ifndef FILEB_H_ #define FILEB_H_ int wat; void world(); #endif /* FILEB_H_ */
このヘッダー ファイルが FileA.cpp と FileB.cpp の両方に含まれている場合、コンパイラは 'wat' が複数回定義されていることを検出します。これは、マクロ FILEB_H_ がすべてのヘッダー ファイルで適切に定義されていないために発生します。
この問題を解決するには、ヘッダー ファイルを次のように変更する必要があります。以下:
FileA.h:
#ifndef FILEA_H_ #define FILEA_H_ #include "FileB.h" void hello(); #endif /* FILEA_H_ */
Fil eB.h:
#ifndef FILEB_H_ #define FILEB_H_ extern int wat; // Declare 'wat' as external void world(); #endif /* FILEB_H_ */
FileB.cpp:
#include "FileB.h" int wat = 0; // Define 'wat' with its initial value void world() { // More code }
FileB.h の 'extern' を使用すると、'wat' が別の場所で定義されており、現在のファイル内でその定義を検索しないようにコンパイラに通知します。 「wat」の実際の定義は FileB.cpp で提供され、複数定義エラーを回避します。
以上が私の C コードで「「wat」の複数の定義」エラーが発生するのはなぜですか? それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。