为了账号安全,请及时绑定邮箱和手机立即绑定

在MS Visual C ++中启用VLA(可变长度数组)?

在MS Visual C ++中启用VLA(可变长度数组)?

C++ C
浮云间 2019-09-26 14:38:29
如何在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很方便,但是要从堆栈中分配不确定的内存量却有堆栈溢出的风险,通常不是一个好主意。


查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 923 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信