【发布时间】:2013-06-22 07:06:14
【问题描述】:
不知道下面的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。
【问题讨论】:
-
忽略嵌套,
A a;不应该编译。它必须是struct A a;。随着这一变化,MSVC 也接受了这一点。 -
谢谢,
struct在我格式化帖子时丢失了,现在添加它。
标签: c standards standards-compliance