如何在MS Visual C ++中启用VLA,C99中定义的可变长度数组,或者根本无法使用?是的,我知道C ++标准基于C89,并且VLA在C89标准中不可用,因此在C ++中不可用,但是MSVC ++也应该是C编译器,可以使用/ TC编译器参数(Compile as C Code (/TC))。但是这样做似乎并不能启用VLA,并且在编译时与C ++(Compile as C++ Code (/TP))一样,编译过程将失败,并出现相同的错误。也许MSVC ++ C编译器仅符合C89,或者我缺少某些内容(某些特殊构造或编译指示/定义)?代码示例:#include <stdlib.h>int main(int argc, char **argv){
char pc[argc+5];
/* do something useful with pc */
return EXIT_SUCCESS;}编译错误:错误C2057:预期常量表达式错误C2466:无法分配大小恒定为0的数组错误C2133:“ pc”:未知大小
3 回答
慕后森
TA贡献1802条经验 获得超5个赞
我遇到了同样的问题,这在MS Visual C ++ 2015中是不可能的,相反,您可以使用vector进行几乎相同的操作,唯一的区别是堆资源管理例程(新/删除)的开销可忽略不计。
虽然VLA很方便,但是要从堆栈中分配不确定的内存量却有堆栈溢出的风险,通常不是一个好主意。
- 3 回答
- 0 关注
- 923 浏览
添加回答
举报
0/150
提交
取消