#include
#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的空間應(yīng)該分配在heap上,而不是stack上。g++做了什么手腳?
#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的空間應(yīng)該分配在heap上,而不是stack上。g++做了什么手腳?