使用C ++中的自定义元素进行const struct初始化

时间:2019-04-22 15:25:26

标签: c++ struct designated-initializer

我正在将一些C代码移植到C ++,并且试图用一些值初始化一个结构。 我希望将该结构存储在flash(const)中,而不是在RAM中,并且它的值是类型定义的元素。

最初,我是这样的:

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

要在Flash中实例化它们,我只需执行以下操作:

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

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

2 个答案:

答案 0 :(得分:3)

指定的初始值设定项不在C ++中(但是,请寻找C ++ 20)。因此,您几乎以相同的方式进行操作,但是没有名称-参数的位置定义了它初始化的字段:

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

答案 1 :(得分:0)

如果您始终需要使用相同的值进行初始化,则只需定义如下结构:

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

您现在可以在没有初始化程序的情况下实例化它:

const structTypeA_t sA;