7

如果一个结构只用在一个函数中,我可以在那个函数中声明它吗?我可以这样做:

int func()
{
    struct {
        int a, b;
    } s;

    s.a=5;

    return s.a;
}

gcc 被它噎住了,但它发出了一个看起来很奇怪的错误,我无法理解,而不是说“对不起,你不能那样做”。

4

1 回答 1

10

这是完全有效的 C89/C99/C11 代码,这是一个没有标签的结构,并且对象具有块范围。检查 C99 6.7.2.3p6 以查看标签的标识符是可选的。

于 2012-06-13T14:03:32.537 回答