首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于数组长度解决方案

2012-02-10 
关于数组长度看到C++primer里说:“数组维数只能用字面常量或者常量表达式初始化的const常量初始化,不能用非

关于数组长度
看到C++   primer里说:“数组维数只能用字面常量或者常量表达式初始化的const常量初始化,不能用非常量或者运行时才能确定的const常量初始化。如
int   buf_size   =   27;
double   salary[buf_size];//error

觉得很疑惑:我在gcc上编译没有任何问题啊。
而且
int   n;
cin> > n;
double   a[n];
这样的语句也是可以运行的。这里n要到运行时才能确定。

请问怎么解释?

[解决办法]
lz说的是,具体的编译器支持不同(dev-c++可以,gcc也没有问题),在vs2005和vc中肯定不行的。
[解决办法]
依赖编译器行为
VS是不能通过的
C++ PRIMER 中的代码是VS编译可通过的

[解决办法]
这个依赖编译器遵循的标准不同
而现在 C99标准支持 数组维数是变量,也就是说
int buf_size = 27;
double salary[buf_size];//OK

现在C语言是OK的

而老教材,都说 buf_size必须是常量,国内大部分的C语言教材都准旬标准C89和C90的。
我们公司使用的C语言标准,是准旬C90的。

[解决办法]
C99扩展

热点排行