代码一:
const int x=5;
int num[x];代码二:int x=5;
int num[x];
代码一能够在g++, vc6.0, vs2010上编译通过。
代码二能够在g++上通过,而在vc6.0,vs2010上通不过。
现在明白怎么回事了。g++是支持变长数组的(VLA),变长数组是c++ C99标准的新特性。C99是GNU主导的标准,M$完全无视,意图压制C99的普及度,所以vc6.0,vs2010,vs2012,包括vs2014(如果有的话),以后的vs都不会支持这个特性。这里鄙视M$一下!
正因为如此,许多跨平台软件都不敢上C99特性,否则在Windows平台只能用gcc编译,这会导致体积和性能都受到影响 。
如果要考虑通用性的话,还是用动态数组吧!
动态数组:
int *num=new int[x]();
本文探讨了C++中变长数组(VLA)这一C99特性在不同编译器上的表现差异。重点介绍了GCC与Visual Studio等编译器对于变长数组的支持情况,并给出了在不支持该特性的环境中实现动态数组的方法。
3655

被折叠的 条评论
为什么被折叠?



