C忽略结构前面的const限定符
C ignoring const qualifier infront of structure
我正在尝试创建一个 const 结构数组,但我不断得到
error initializer element is not a compile time constant
我用的是keil IDE。
这很奇怪,因为我的结构是一个常量,这是一个例子:
typedef const struct{
CRGB color; // CRGB is another struct
void (*myfunc)(int);
}myProfile;
myProfile profile1 = { ....... }; // initialized struct
myProfile profiles[1] = { profile1 }; // error occurs here
即使我用
const myProfile profile1 = { ..... };
初始化结构,我仍然得到相同的错误。
我可以找到解决方法,但我真的很想了解发生了什么。谢谢
出现错误是因为您尝试使用一个变量初始化数组,该变量不是常量(=编译时已知的固定值),如评论中M.M所述。
如果你想为你的结构创建一个默认值,你可以按照here。
基于该答案,您可以使用以下内容初始化 table:
MyStruct instances[2] = {MyStruct_default, MyStruct_default};
这是一个快捷方式:
MyStruct instances[2] = { {.id = 3}, {.id = 3} };
请注意,对于由多个成员组成的结构,可以保留一些空白,大多数情况下应将它们设置为0。
我正在尝试创建一个 const 结构数组,但我不断得到
error initializer element is not a compile time constant
我用的是keil IDE。 这很奇怪,因为我的结构是一个常量,这是一个例子:
typedef const struct{
CRGB color; // CRGB is another struct
void (*myfunc)(int);
}myProfile;
myProfile profile1 = { ....... }; // initialized struct
myProfile profiles[1] = { profile1 }; // error occurs here
即使我用
const myProfile profile1 = { ..... };
初始化结构,我仍然得到相同的错误。
我可以找到解决方法,但我真的很想了解发生了什么。谢谢
出现错误是因为您尝试使用一个变量初始化数组,该变量不是常量(=编译时已知的固定值),如评论中M.M所述。
如果你想为你的结构创建一个默认值,你可以按照here。
基于该答案,您可以使用以下内容初始化 table:
MyStruct instances[2] = {MyStruct_default, MyStruct_default};
这是一个快捷方式:
MyStruct instances[2] = { {.id = 3}, {.id = 3} };
请注意,对于由多个成员组成的结构,可以保留一些空白,大多数情况下应将它们设置为0。