#include <stdio.h>
#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++做了什么手脚?
责任编辑:小草