我正在尝试创建一个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 = { ..... };
初始化结构,我仍然遇到相同的错误。
我可以找到解决方法,但是我真的很想了解发生了什么。谢谢。
答案 0 :(得分:0)
发生错误是因为您尝试使用变量(而不是常量(=编译时已知的固定值))初始化数组,如注释中提到的M.M。
如果要为结构创建默认值,则可以按照here所示进行操作。
在此答案的基础上,您将使用以下内容初始化表:
MyStruct instances[2] = {MyStruct_default, MyStruct_default};
这是以下操作的快捷方式:
MyStruct instances[2] = { {.id = 3}, {.id = 3} };
请注意,对于由多个成员组成的结构,您可以保留一些空白,大多数情况下应将其设置为0。