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