在C中为结构类型常量赋值

时间:2012-10-23 10:09:17

标签: c visual-studio-2010

我有以下代码,我猜是将值赋给常量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中编译?

1 个答案:

答案 0 :(得分:8)

语法是在C99中引入的,允许在初始化时明确指定成员的名称(.code.cluster称为指示符)。初始化会将值0x00分配给code成员,并将值0x01分配给cluster成员。

VC仅支持C89,因此编译失败。由于struct只有两个成员并且两个都正在初始化,您可以用以下内容替换初始化:

const MadStruct madStructConst = { 0x00, 0x01 };

如果没有指示符,则会按照struct中定义成员的顺序使用指定的值初始化成员。在这种情况下,code被分配0x00cluster被分配0x01,与指定者的初始化相同。