1. ホーム
  2. C

警告: 'struct XXX' はパラメータリストの内部で宣言されています。

2022-03-02 12:57:21

質問の警告は、関数が引数に構造体XXX型を持ち、その型の定義が引数宣言の後に現れると、gccによって生成されます。

次の例は、この警告をシミュレートしたものです。

/home/me/mjntest>cat t1.c
int f(struct S);

struct S {
  int name;
};

int main() {
    return 0;
}

/home/me/mjntest>gcc t1.c
t1.c:1: warning: 'struct S' declared inside parameter list
t1.c:1: warning: its scope is only this definition or declaration, which is probably not what you want

関数 f の宣言を構造体 S の定義の後に置くと、警告が発生しなくなります。

/home/me/mjntest>cat t1.c
struct S {
  int name;
};

int f(struct S);

int main() {
    return 0;
}

/home/me/mjntest>gcc t1.c
/home/me/mjntest>