ホームページ > バックエンド開発 > C++ > C での「変数の複数定義」エラーを解決するにはどうすればよいですか?

C での「変数の複数定義」エラーを解決するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-30 13:10:11
オリジナル
173 人が閲覧しました

How to Resolve

C での変数の複数の定義

C プロジェクトで複数のファイルを操作する場合、変数の複数の定義に関連するエラーが発生する可能性があります。次の状況を考えてみましょう:

FileA.cpp:

#include "FileA.h"

int main()
{
    hello();
    return 0;
}

void hello()
{
    //code here
}
ログイン後にコピー

FileA.h:

#ifndef FILEA_H_
#define FILEA_H_
#include "FileB.h"
void hello();

#endif /* FILEA_H_ */
ログイン後にコピー

FileB.cpp:

#include "FileB.h"

void world()
{
    //more code;
}
ログイン後にコピー

FileB.h:

#ifndef FILEB_H_
#define FILEB_H_

int wat;
void world();


#endif /* FILEB_H_ */
ログイン後にコピー

これをコンパイルしようとするとコードを実行すると、「`wat' の複数の定義」というエラーが発生する可能性があります。

説明:

グローバル変数 wat を定義したためにエラーが発生します。コンパイル単位で 2 回実行します。 FileA.h と FileB.h の両方に wat の宣言が含まれており、グローバル スコープで 2 回定義されています。

解決策:

この問題を解決するには、次の手順に従ってください。手順:

FileB.h:

extern int wat;
ログイン後にコピー

FileB.cpp:

int wat = 0;
ログイン後にコピー

で extern を使用するFileB.h では、wat という名前の変数が別の場所に存在することをコンパイラーに通知します。この場合、FileB.cpp の初期化子を使用して実際の変数を定義します。

このアプローチにより、wat がグローバル スコープ内で 1 回宣言されることが保証され、複数定義エラーが排除されます。

以上がC での「変数の複数定義」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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