0

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

最初,我是这样的:

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++ 中实现它?

4

2 回答 2

3

指定的初始值设定项不在 C++ 中(还没有,但请寻找 C++20)。所以你几乎以同样的方式来做,但没有名字——参数的位置定义了它初始化的字段:

const structTypeA_t sA = {ONE,
                          TWO,
                          3
};
于 2019-04-22T15:27:22.067 回答
0

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

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

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

const structTypeA_t sA;
于 2019-04-22T15:38:16.980 回答