我编译了这个(gcc编译器):

#include <stdio.h>

main() {

    struct {
        a:1;
        b:2;
    } t;

    t.b=6;
    t.a=2;
    printf("%d %d",t.a,t.b);
}

显示的错误为:
“a”前应为说明符限定符列表
为什么在默认情况下将未命名的数据变量作为int时需要它。请解释一下。。。

最佳答案

这是C language standard所要求的。根据第6.7.2.1节第4部分:
位字段的类型应为Bool、signed int、unsigned int或其他实现定义类型的限定或非限定版本。

10-08 05:10