我想知道以下 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 编译并按预期工作,而代码检查器抱怨,我想知道谁是对的,以及这是否可以被标准(C90 或 C99)以struct B
这种形式引用。