我有下面的代码,我猜是给常量结构赋值
在头文件中:
struct madStruct {
uint8_t code;
uint8_t cluster;
};
typedef struct madStruct MadStruct;
在
C
文件中const MadStruct madStructConst = {
.code = 0x00,
.cluster = 0x01,
};
我想知道这个代码应该做什么?
这个代码没有在Visual Studio C++ 2010中编译,我怎样才能转换它,以便我能在Visual Studio和Visual Studio C++ 2010中编译?
最佳答案
该语法在c99中引入,允许在初始化时显式指定成员的名称(.code
和.cluster
称为指示符)。初始化将值0x00
分配给code
成员,将值0x01
分配给cluster
成员。
VC只支持C89,所以编译失败。由于struct
只有两个成员,并且两个成员都在初始化,因此您可以用以下内容替换初始化:
const MadStruct madStructConst = { 0x00, 0x01 };
如果没有指示符,则按照
struct
中定义成员的顺序,使用指定值初始化成员。在这种情况下,code
被指定为0x00
并且cluster
被指定为0x01
,与使用指示符初始化相同。