为什么const int x=5;不是C中的常量表达式? [英] Why is const int x = 5; not a constant expression in C?
本文介绍了为什么const int x=5;不是C中的常量表达式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我以为C对我来说不会再有惊喜了,但这让我很惊讶。
const int NUM_FOO = 5;
....
int foo[NUM_FOO];
==>error C2057: expected constant expression
我的C++经验使我在内部尽可能地反对#define
。所以这一次真的让人大吃一惊。VS2019,用/TC编译。我以为C99无论如何都允许可变大小的数组。
谁能解释为什么会发生拒绝,因为编译器在编译时肯定知道数组的大小?
C99不是允许可变大小的数组吗?
推荐答案
const
在C中没有声明编译时常量。如果要避免使用#define
并希望使用可以出现在调试器中的符号名称,则可以改用enum
常量。C99是否支持VLA。但是,VS2019 does not support C99.
这篇关于为什么const int x=5;不是C中的常量表达式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文