下面的C++代码能编译么? |
|
www.nanhushi.com 佚名 不详 |
#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++做了什么手脚?考试大(www.Examda。com)
|
|
|
文章录入:杜斌 责任编辑:杜斌 |
|
上一篇文章: VC中调用XMLHTTP对象访问远程数据的代码 下一篇文章: C实例编程(删除子字符串的程序) |
【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|