【C言語】’xxx’ redeclared as different kind of symbol

‘xxx’ redeclared as different kind of symbolというエラーは、変数や関数などのシンボル(識別子)が重複して定義された場合に発生します。C言語では、同じ名前のシンボルを定義することはできません。

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

int xxx = 10;

int xxx() {
  return 20;
}

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

このエラーを修正するには、シンボルの名前を変更するか、重複している定義を削除する必要があります。例えば、次のような修正を行うことでこのエラーを解消できます。

int xxx_int = 10;

int xxx_func() {
  return 20;
}

また、関数と変数を区別するために、C言語では名前の先頭にアンダースコアを付けることが一般的です。そのため、以下のような修正も可能です。

int _xxx = 10;

int xxx() {
  return 20;
}

これらの修正を行うことで、重複した定義から生じるエラーを回避することができます。

コメント

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