C忽略结构前面的const限定词

时间:2018-10-24 22:15:27

标签: c keil

我正在尝试创建一个const结构数组,但是我一直在获取

error initializer element is not a compile time constant

我正在使用keil IDE。 这很奇怪,因为我的结构是一个const,这是一个示例:

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 = { ..... }; 初始化结构,我仍然遇到相同的错误。

我可以找到解决方法,但是我真的很想了解发生了什么。谢谢。

1 个答案:

答案 0 :(得分:0)

发生错误是因为您尝试使用变量(而不是常量(=编译时已知的固定值))初始化数组,如注释中提到的M.M。

如果要为结构创建默认值,则可以按照here所示进行操作。

在此答案的基础上,您将使用以下内容初始化表:

MyStruct instances[2] = {MyStruct_default, MyStruct_default};

这是以下操作的快捷方式:

MyStruct instances[2] = { {.id = 3}, {.id = 3} };

请注意,对于由多个成员组成的结构,您可以保留一些空白,大多数情况下应将其设置为0。