微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

编译错误C2099:初始化程序不是常量[重复项]

如何解决编译错误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 举报,一经查实,本站将立刻删除。