【发布时间】:2017-11-10 05:09:59
【问题描述】:
代码:
#include <stdio.h>
int main() {
int size;
scanf("%d", &size);
int foo[size];
for(int i = 0; i < size; i++)
scanf("%d", &foo[i]);
for(int i = 0; i < size; i++)
printf("%d\n",foo[i]);
return 0;
}
这段代码如何编译?更具体地说:如果在编译时不知道局部变量 foo 的大小,编译器如何知道框架 main 的大小。我期待一个编译错误:“foo 的类型不完整”
还有tried的代码,它也运行良好:
【问题讨论】:
-
你可以检查你最喜欢的编译器生成的程序集
-
"编译器怎么知道主框架的大小" --> 编译器在编译的时候并不知道
int foo[size]的大小,也不需要那个时候知道。