我正在将一些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 ++中实现它?
答案 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;