嵌套结构名称可见性

时间:2013-06-25 13:04:00

标签: c standards standards-compliance

我想知道以下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

1 个答案:

答案 0 :(得分:0)

是的,你可以,但是如果你想在结构A之外使用结构B,你会有错误。