【发布时间】:2015-08-05 23:01:28
【问题描述】:
以下 sn-p 使用标准 gcc 正确编译。这里有什么可能的陷阱? --尤其是内核级开发。
int n;
f(){n=2;}
g(){int b[n];}
main(){
int a[n];
f();
g();
}
【问题讨论】:
-
无法编译 (
2 : error: variably modified 'c' at file scope)。 -
n 在编译时为 0,并且 int c[n] 将是一个零长度数组,因为结构在编译时被解析。
-
由于内核结构通常必须比引发它们的调用寿命更长,因此即使分配在内核堆栈上(无论如何大小都是有限的),它的用处似乎也很有限。当然,无论如何,全局 VLA 没有意义(或编译):(
-
这些不是符合标准的函数定义。他们将 not 在没有警告的情况下编译 gcc 5.1+
标签: c arrays gcc variable-length-array