ホームページ >バックエンド開発 >C++ >C で「'wat' の複数の定義」というコンパイル時エラーが発生するのはなぜですか?

C で「'wat' の複数の定義」というコンパイル時エラーが発生するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-08 07:04:16840ブラウズ

Why Am I Getting a

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 の宣言をその定義から分離する必要があります。

解決策:

  1. FileB.h で wat を外部変数として宣言します。 :
extern int wat;

これは、ワットが定義されることをコンパイラーに通知します。

  1. FileB.cpp で wat を定義します:
int wat = 0;

これで、コンパイル時に、コンパイラーは wat が FileB.h で宣言され定義されているものとして正しく識別されます。 FileB.cpp で、複数定義エラーを解決します。

以上がC で「'wat' の複数の定義」というコンパイル時エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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