【C言語】conflicting types for ‘xxx’

‘xxx’ conflicting types for ‘xxx’というエラーは、変数や関数などのシンボル(識別子)が定義された際に、そのシンボルの型が矛盾している場合に発生します。C言語では、同じ名前のシンボルに対して異なる型が定義されることはできません。

例えば、次のようなコードを書いた場合にこのエラーが発生します。

int xxx = 10;

void xxx() {
  // 関数の処理
}

このコードでは、xxxという名前の変数が定義されているのに、その後に同じ名前の関数が定義されています。しかし、変数の型はint型であるのに対し、関数の型はvoid型です。このような型の矛盾はC言語では許可されないため、コンパイラはこのような定義を検出してエラーを出力します。

このエラーを修正するには、定義されたシンボルの型が一致するように修正する必要があります。例えば、次のような修正を行うことでこのエラーを解消できます。

int xxx = 10;

// 変数と同じ型を持つ関数を定義する
int xxx() {
  // 関数の処理
  return 0;
}

また、別の名前を付けることで同じ問題を回避することもできます。例えば、次のような修正も可能です。

int xxx = 10;

// 別の名前を付ける
void xxx_func() {
  // 関数の処理
}

これらの修正を行うことで、型の矛盾から生じるエラーを回避することができます。

コメント

タイトルとURLをコピーしました