我在struct中有一个struct,在初始化外部struct时我想将内部结构初始化为const。
typedef struct A {
uint16_t id;
}A;
typedef struct B {
A a;
uint16_t data;
}
我知道我可以在用这段代码初始化外部结构时初始化内部结构:
B test = {
{
.id = 0x100
},
.data = 0
};
我知道我可以这样做:
const A aTest = {
.id = 0x100
};
B test = {
.a = aTest,
.data = 0
但有没有办法让内部初始化直接保持不变?
答案 0 :(得分:1)
您需要将内部成员定义为const
:
typedef struct B {
const A a;
uint16_t data;
} B;
然后你可以像这样初始化:
B test = {
{
.id = 0x100
},
.data = 0
};
虽然这会产生编译器错误:
test.a.id=1;