e******o 发帖数: 757 | 1 当要define 一个array 的时候, C++ primer是这样写的: The dimension must be a
constant expression whose value is greater than or equal one. 但我发现网上
好多代码都不是这样的,但是能编译通过。
比如一个function,
int largestRetangleArea( vector &height)
{
int area[height.size()];
//some operations;
//return a value;
}
编译是也能通过。请问一下为什么呢?
谢谢。 |
p*********t 发帖数: 2690 | 2 咋编译的?什么平台?用的什么命令编译的,有没有用什么参数?
a
【在 e******o 的大作中提到】 : 当要define 一个array 的时候, C++ primer是这样写的: The dimension must be a : constant expression whose value is greater than or equal one. 但我发现网上 : 好多代码都不是这样的,但是能编译通过。 : 比如一个function, : int largestRetangleArea( vector &height) : { : int area[height.size()]; : //some operations; : //return a value; : }
|
m*******l 发帖数: 12782 | 3 C99 下是可以的
C11后来变成optional的了
a
【在 e******o 的大作中提到】 : 当要define 一个array 的时候, C++ primer是这样写的: The dimension must be a : constant expression whose value is greater than or equal one. 但我发现网上 : 好多代码都不是这样的,但是能编译通过。 : 比如一个function, : int largestRetangleArea( vector &height) : { : int area[height.size()]; : //some operations; : //return a value; : }
|
e******o 发帖数: 757 | 4 ubuntu12.04, gcc 4.6.3 没用什么参数。
/*sorry. I just use the online judge system at leetcode.com. 我不知道它的服务
器用的什么平台。等会我在我电脑上试试。
谢谢解答。*/
【在 p*********t 的大作中提到】 : 咋编译的?什么平台?用的什么命令编译的,有没有用什么参数? : : a
|
e******o 发帖数: 757 | 5 Thank you very much.
【在 m*******l 的大作中提到】 : C99 下是可以的 : C11后来变成optional的了 : : a
|
f*******n 发帖数: 12623 | 6 但是他用的是C++。variable-length array不在C++标准里
【在 m*******l 的大作中提到】 : C99 下是可以的 : C11后来变成optional的了 : : a
|
b*******s 发帖数: 5216 | 7 刚才简单试验了一下
int main()
{
int a[0];
cout << a << " " << sizeof(a) << endl;
}
输出了 0xbfcc8ba8 0
编译和执行都没有问题 g++ 4.6.2
a分配成功,长度0,可能是g++的编译器行为 |