2013-03-01 125 views
-2

我有这样静态数组,可变大小允许?

 
void foo(int i) 
{ 
    ... 
    uint8_t buf[ i]; 
    ... 
} 

的功能,我不明白为什么编译器不抱怨...... 我使用

g++ -c -g -Wall
编译

任何想法?

+0

这是一个编译器扩展。我相信你可以在这里找到重复。 – chris 2013-03-01 23:10:08

+0

[可变长度数组](http://en.wikipedia.org/wiki/Variable-length_array) – Mahesh 2013-03-01 23:10:38

+1

我想你会得到一个警告,如果你指定例如'-std = C++ 11'并有一个'-pedantic'选项。 – 2013-03-01 23:11:48

回答

1

这是一个GCC compiler extension。标准允许符合实现,因为它不会破坏任何格式正确的代码(只要它发布诊断)。当然,这不是便携式的,因此不推荐。

随着-pedantic选项,你会得到以下警告:

warning: ISO C++ forbids variable length array ‘buf’ [-Wvla] 
+0

如果**编译器发布诊断,则允许**。 – 2013-03-01 23:12:21

+0

哦!这是新的还是什么?我的意思是扩展 – santi 2013-03-01 23:13:03

+0

@santi现在已经有很长一段时间了。 – 2013-03-01 23:14:15