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。