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

2024-01-17

我有以下代码,我猜它正在为常量结构分配一个值

在头文件中:

struct madStruct {
    uint8_t code;
    uint8_t cluster;
};
typedef struct madStruct MadStruct;

and in C file

const MadStruct madStructConst = {
    .code = 0x00,
    .cluster = 0x01,
};

我想知道这段代码的作用是什么?

此代码无法在 Visual Studio C++ 2010 中编译,如何转换它以便可以在 MingW 和 Visual Studio C++ 2010 中编译?


该语法是在 C99 中引入的,允许在初始化时显式指定成员的名称(.code and .cluster被称为指示符)。初始化赋值0x00 to the code成员及价值0x01 to the cluster member.

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

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

如果没有指示符,成员将按照成员在中定义的顺序使用指定的值进行初始化struct。在这种情况下code被安排了0x00 and cluster被安排了0x01,与使用指示符初始化相同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C 中为结构类型常量赋值 的相关文章

随机推荐