【C言語】invalid type argument of ‘->’ (have ‘xxx’)

このエラーメッセージは、C言語で関数の返り値の型と宣言された型が一致しない場合に表示されます。

例えば、以下のようなコードでエラーが発生した場合

int sum(int a, int b) {
  return a + b;
}

int main() {
  int result = sum(1, 2);
  printf("%d\n", result);
  return 0;
}

エラーメッセージは以下のようになります。

error: 'else' without a previous 'if'

このエラーの原因は、sum 関数の型宣言が正しくないためです。関数の型宣言は、返り値の型と引数の型を指定する必要があります。上記の例では、sum 関数は int 型の値を返す関数であるため、型宣言は int sum(int a, int b) と書く必要があります。

正しい型宣言を行ったコードは以下のようになります。

if (1 == 1) {
  printf("1 equals 1.\n");
} else {
  printf("Hello, world!\n");
}

型宣言を正しく行うことで、このようなエラーを避けることができます。

コメント

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