3

我有以下代码,我猜是为常量结构赋值

在头文件中:

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 中编译?

4

1 回答 1

8

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

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

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

如果没有指示符,则使用指定的值初始化成员,按照在 . 中定义成员的顺序struct。在这种情况下codeis assigned0x00clusteris assigned 0x01,与使用指示符的初始化相同。

于 2012-10-23T10:14:26.650 回答