我把structunsigned 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

给什么?再说一次,我有两个版本的这个确切的东西,它工作得很好。

最佳答案

可以将变量声明为函数范围外的全局变量,但不能有单独的代码行来设置其值。在单独的行上设置该值是可执行代码,而不是初始化,因此不允许在该行中设置该值。
如果要在声明时初始化它,请尝试:

myStruct myNewStructVar = {0};

这应该在现在的地方起作用。

10-08 03:50