C++ コンパイル エラー: コンパイラは、型の異なる複数の定義をサポートしていません。解決方法は?

王林
リリース: 2023-08-22 11:03:32
オリジナル
1621 人が閲覧しました

C++ コンパイル エラー: コンパイラは、型の異なる複数の定義をサポートしていません。解決方法は?

C でプログラムを作成すると、コンパイル エラーが発生することがあります。よくあるエラーの 1 つは、「コンパイラは、異なる型の複数の定義をサポートしていません。」です。このエラーは通常、複数の変数または関数が別のファイルまたは同じファイル内の別の場所で定義されており、それらの型が一致しないため、コンパイラがどの定義を使用するかを決定できないことが原因で発生します。この記事では、このエラーの原因と解決策について説明します。

1. エラーの原因

C では、変数または関数を別のファイルまたは同じファイル内の別の場所に定義できます。複数の定義が存在する場合、コンパイラーはどれを使用するかを決定する必要があります。複数の定義の型が異なる場合、コンパイラはどの定義を使用するかを決定できず、エラーが報告されます。

たとえば、x という名前の変数と y という名前の関数がプログラムで定義されています。

// file1.cpp
int x = 1;

// file2.cpp
double y() { return 2.0; }
ログイン後にコピー

この例では、x の型は int で、y の型は double です。コンパイル中に、file1.cpp と file2.cpp が同時にインクルードされると、コンパイラーは「コンパイラーは、異なる型の複数の定義をサポートしていません」というエラーを報告します。

2. 解決策

この問題を解決するには、extern キーワードを使用してこれらの変数または関数を宣言し、他のファイルで使用できるようにする必要があります。

file1.cpp では、extern を使用して y 関数を宣言する必要があります。これにより、コンパイラは y 関数が別のファイルで定義されていることを認識し、y 関数の戻り値の型を正しく解析できます。同様に、file2.cpp では、extern を使用して x 変数を宣言する必要があります。変更されたコードは次のようになります。

// file1.cpp
extern double y();

int x = 1;

// file2.cpp
extern int x;

double y() { return 2.0; }
ログイン後にコピー

この例では、extern キーワードを使用して、これらの変数または関数が他のファイルで定義されていることをコンパイラに伝えます。このようにして、コンパイル時にコンパイラは型を正しく解決できるため、「コンパイラは異なる型の複数の定義をサポートしていません」というエラーが回避されます。

3. 概要

C では、複数の定義が出現した場合、定義された型が異なると、コンパイラは「コンパイラは、異なる型の複数の定義をサポートしていません。」と報告します。この問題を解決するには、extern キーワードを使用してこれらの変数または関数を宣言し、他のファイルで使用できるようにする必要があります。こうすることで、コンパイル時にコンパイラーが型を正しく解決できるため、エラーが回避されます。

以上がC++ コンパイル エラー: コンパイラは、型の異なる複数の定義をサポートしていません。解決方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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