在C中使用unsigned int位字段结构时出错

时间:2013-11-28 01:53:10

标签: c struct bit-fields

我正在使用struct完美地使用unsigned int位字段,但突然,在复制其中一个之后,编译器正在失去理智(看起来似乎)。这是我的代码:

typedef struct myStruct {
    unsigned int myVar:1;
} myStruct; // my compiler requires TWO declarations of the name for typedef

myStruct myNewStructVar;

myNewStructVar.myVar = 0; // throws error that "myNewStructVar" is unknown to the compiler

是什么给出的?同样,我有两个版本的这个确实的东西,它工作正常。

1 个答案:

答案 0 :(得分:1)

您可以将变量声明为函数作用域之外的全局变量,但不能使用单独的代码行来设置其值。在单独的行上设置值是可执行代码而不是初始化,并且不允许在那里。

如果您想在声明点初始化它,请尝试:

myStruct myNewStructVar = {0};

这应该适用于现在的情况。