次の C コードが有効かどうか疑問に思います。
struct A {
struct B {
int value;
} b;
};
struct B;
void func1(struct B* b) {
b->value = 42;
}
void func2() {
struct A a;
func1(&a.b);
}
このコードは gcc でコンパイルされ、期待どおりに動作しますが、コード チェッカーは不平を言い、誰が正しいのかstruct B
、この形式で参照するのが標準 (C90 または C99) で受け入れられるかどうか疑問に思います。