【C言語】conflicting type qualifiers for ‘xxx’

「conflicting type qualifiers for ‘xxx’」というエラーメッセージは、C言語で変数を宣言する際に、その変数の型に矛盾があるときに表示されます。例えば、次のようなコードでこのエラーが発生することがあります。

int main()
{
  const int *ptr;  // ptrはconst int型へのポインタ
  int *const ptr;  // ptrはint型へのconstポインタ
  // 以下、変数を使用するプログラム
  return 0;
}

このようなコードでは、「ptr」という変数が宣言されましたが、その宣言に矛盾があります。「ptr」は、一方では「const int型へのポインタ」であり、他方では「int型へのconstポインタ」です。このような宣言はC言語では許されません。

このような場合、「conflicting type qualifiers for ‘xxx’」というエラーが表示されます。このエラーを修正するには、「ptr」の宣言を統一する必要があります。例えば、次のように変更することができます。

int main()
{
  // ptrはconst int型へのポインタ
  const int *ptr;
  // 以下、変数を使用するプログラム
  return 0;
}

また、「const int型へのポインタ」でなく「int型へのconstポインタ」を宣言したい場合は、次のように変更することができます。

int main()
{
  // ptrはint型へのconstポインタ
  int *const ptr;
  // 以下、変数を使用するプログラム
  return 0;
}

このように、「conflicting type qualifiers for ‘xxx’」というエラーが発生した場合は、変数の宣言を統一する必要があります。

コメント

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