ホームページ > バックエンド開発 > C++ > C でヘッダー ファイルを複数インクルードすると「複数定義」エラーが発生するのはなぜですか?

C でヘッダー ファイルを複数インクルードすると「複数定義」エラーが発生するのはなぜですか?

Barbara Streisand
リリース: 2024-12-27 17:00:11
オリジナル
850 人が閲覧しました

Why Does Multiple Inclusion of a Header File Cause

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート