【发布时间】:2012-04-07 16:58:37
【问题描述】:
我编译了这个(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 时需要它。请解释...
【问题讨论】:
-
“未命名的数据变量默认被视为 int”:看起来你脑子里有一个非常旧的 C 版本。如果您使用
-Wall编译程序,您还应该收到main的“非常规”声明的警告。 -
您的代码上有更多 cmets:
main()应该是int main(void);位字段通常应声明为unsigned;您分配给t.b和t.a的值超出了它们必须保持的值范围。
标签: c gcc bit-fields specifier