通过变长数组(VLA)来看编译器的不同

代码一:

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]();



 

你可能感兴趣的:(变长数组)