【C言語】parameter NNN (‘xxx’) has incomplete type

C言語で「parameter NNN (‘xxx’) has incomplete type」というエラーが表示される場合、その関数の引数の型が完全でないことが原因です。

例えば、次のような関数が定義されている場合

void print_struct(struct s s) {
  printf("x: %d, y: %d\n", s.x, s.y);
}

この関数は、構造体struct sを受け取り、その中のxyの値を表示するものです。

しかし、次のように呼び出すと、「parameter NNN (‘xxx’) has incomplete type」というエラーが表示されます。

struct s;
print_struct(s);

このような場合、構造体struct sの定義がされていません。

そのため、関数を正しく呼び出すには、構造体の定義が必要です。

struct s {
  int x;
  int y;
};

struct s s = {1, 2};
print_struct(s);

このように、構造体の定義を行い、完全な型を持つ変数を渡して関数を呼び出すことで、「parameter NNN (‘xxx’) has incomplete type」というエラーが表示されなくなります。

コメント

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