我有下面的代码,我猜是给常量结构赋值
在头文件中:

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,与使用指示符初始化相同。

10-04 14:59