表达式必须含有常量值..求助之前写的一维数组排序的题,以前在vs2022是可以运行的,现在一写突然不行了。问了问gpt,他说旧版会这样,我更新了一下也不好使。当时在学校答题网站过了的 版本是企业版17.9.0pre1.0#
问题是数组声明中的数组大小必须是核心常量表达式。简而言之,这意味着在编译时可评估为常量的表达式。在第一种情况下确实如此(您可以看到 SIZE 是积分常数 20 )但在第二种情况下 并非 如此。在那里, SIZE 函数参数只是 const - 从某种意义上说,它是不可修改的 - 而不是核心常量表达式。您可以看到不同之处...
然而在MSVC中,这段程序在编译时会产生“表达式必须含有常量值”的编译错误。这是因为C++不支持VLA,MSVC在编译C程序时会拒绝这种与C++标准不一致的C语言特性。综上,编译C语言程序时不要使用MSVC,可以使用MinGW GCC或LLVM Clang等编译器。新版的VS可以在VS安装程序内安装Clang编译器。 微白微笑 大能力者 8 加上...
定义数组的时候, 中括号里的必须是常量, 而不能是变量, 也就是说你要么直接写一个数, 要么用#define宏定义一个符号, 而不能使用任何形式的变量(const声明的也是变量, 只不过它的值不能改变)
VS对C99支持的不是很好,这里是不支持变长数组,可以用GCC 编译器试试,用VS写C程序可烦人了
pibusi 毛蛋 1 变长数组不是可以使用局部变量来做数组下标吗?为什么在VScode里这么写会报错 GTA小鸡 小吧主 11 用的什么编译器 二饼弟弟 低能力者 5 我记得在c11标准中是支持这样写的,你的编译器支持的是什么标准 登录百度帐号 下次自动登录 忘记密码? 扫二维码下载贴吧客户端 下载贴吧APP看高清直播、视频...
由上图可知,在vs2019中,会报错,而且报错的理由就是表达式必须要含有常量值。哪怕你是const修饰的变量。(下面我们会讲到:const修饰的变量具有常变量属性) 但是,我在这里给出答案: 在C99之前,这种写法是不允许的,而在C99之后,这种写法是允许的。而我们vs编译器的编译环境并不能很好的支持C99的语法,如果我们在gcc编...
表达式必须含有常量值 只看楼主 收藏 回复 梦中难寻 异能力者 6 vs定义数组时'[lbk][rbk]'里不能是变量。那大佬是如何对待这个问题的? 一周休七日 小吧主 12 换编译器 春梦鸟留痕 团子家族 10 指针+malloc Eirwinder 麻婆豆腐 11 是动态创建的吗?int **p =new int[lbk];for(int i=0;i<...
} [root@PC1 test]# gcc test.c-o kkk## 无法进行编译,说明声明数组个数时,必须使用常量表达式 test.c: In function ‘main’: test.c:7:2: error: variable-sizedobjectmay not be initializedintarray1[var1] = {3,5,8,4,9};^test.c:7:2: warning: excess elementsinarray initializer [enable...
VS中不支持VLA,定义数组时大小必须指定为字面值常量。只能写成int isPri[25]。