通过变长数组(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]();
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 实现变长数组
- 下一篇: 增强for循环和可变长度数组