如何解决编译错误C2099:初始化程序不是常量[重复项]
|| 这个问题已经在这里有了答案:解决方法
在C语言的C89 / 90版本中,所有聚合初始化程序必须仅由常量组成。在C语言术语中,
int
类型的常量是文字值,例如10
,20u
,0x1
等。Enum成员也是常量。类型4的变量在C中不是常量。不能在聚合初始值设定项中使用4变量。 (因此,在C语言中,当需要声明命名常量时,应使用#define
或enum
,而不是use8ѭ限定词。)
在C99中,放宽了对聚合初始化程序的要求。现在可以在局部对象的聚合初始化程序中使用非常量。但是,对于静态对象(如您的示例),该要求仍然成立。因此,即使在C99中,您也必须使用
#define a 0
或使用@R .. \答案中建议的命名枚举常量。
,a
不是常数表达式。这是const
限定的变量。如果要在常量表达式中使用符号名称,则需要预处理器宏(#define a 0
)或枚举(enum { a = 0 };
)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。