![]() ![]() |
|
下面的C++代码能编译么? | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/10/22 21:29:54 文章录入:杜斌 责任编辑:杜斌 | |
|
|
#define NUM getnum() int getnum() { int x = 0; scanf("%d", &x); printf("%d\n", x); return x; } int main(char** argc, int argv) { int array[NUM]; printf("array size =%d\n",sizeof(array)); return 0; } 在g++中居然可以编译。 输入10,返回array size=40 输入20,返回array size=80 输入-1,返回array size =-4!! 问题: 1.Examda提示: 这样的做法符合C++标准么?连sizeof成了运行期计算 2.这个array的空间应该分配在heap上,而不是stack上。g++做了什么手脚?考试大(www.Examda。com) |
|
![]() ![]() |