【C言語】incompatible type for argument NNN of ‘xxx’

C言語で「incompatible type for argument NNN of ‘xxx’」というエラーメッセージが表示された場合、それは指定された関数の引数の型が互換性がないということを意味します。これは、関数の呼び出し時に渡された引数の型が、その関数が期待する型と異なるために発生します。

例えば、次のようなコードでこのエラーが発生する可能性があります。

#include <stdio.h>

void print_int(int x) {
  printf("%d\n", x);
}

int main(void) {
  print_int("Hello, world!"); // エラーが発生する行
  return 0;
}

この例では、print_int関数は整数型の引数を受け取ることが期待されますが、main関数から呼び出されるときには文字列リテラルの値が渡されます。このような場合、コンパイラは「incompatible type for argument 1 of ‘print_int’」というエラーメッセージを出力します。

このような場合、その関数が期待する型と同じ型の引数を渡すようにプログラムを修正することで、このエラーは解消されます。

#include <stdio.h>

void print_int(int x) {
  printf("%d\n", x);
}

int main(void) {
  print_int(42); // 修正後
  return 0;
}

この例では、print_int関数に整数値の42を渡すように修正されました。これにより、互換性がない型の引数が渡されることがなくなり、エラーが解消されます。

コメント

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