使用 C++ 中的自定义元素进行 Const 结构初始化

Const struct initialization with custom elements in C++

本文关键字:Const 结构 初始化 元素 C++ 自定义 使用      更新时间:2023-10-16

我正在将一些 C 代码移植到C++,我正在尝试使用一些值初始化结构。我希望结构存储在闪存(const(中而不是RAM中,并且其值是typedef'd元素。

最初,我是这样的:

typedef struct
{
    typeA_t elementA;
    typeB_t elementB;
    uint8_t elementC;
} structTypeA_t;

为了在闪存中实例化它们,我简单地做了以下操作:

const structTypeA_t sA = {
    .elementA = ONE,
    .elementB = TWO,
    .elementC = 3
};

我知道这种类型的初始化在C++是不允许的。如何在C++实现它?

指定的

初始值设定项不在C++中(尚未,但请查找 C++20(。所以你几乎以同样的方式做,但没有名称 - 参数的位置定义了它初始化的字段:

const structTypeA_t sA = {ONE,
                          TWO,
                          3
};

如果你总是需要使用相同的值进行初始化,那么你可以像这样定义结构:

struct structTypeA_t
{
    typeA_t elementA = ONE;
    typeB_t elementB = TWO;
    uint8_t elementC = 3;
};

您现在可以在没有初始值设定项的情况下实例化它:

const structTypeA_t sA;