牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2013-04-10 投稿人: 浏览次数:142
代码一:
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]();



 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。