我有这样静态数组,可变大小允许?
void foo(int i) { ... uint8_t buf[ i]; ... }
的功能,我不明白为什么编译器不抱怨...... 我使用
g++ -c -g -Wall编译
任何想法?
我有这样静态数组,可变大小允许?
void foo(int i) { ... uint8_t buf[ i]; ... }
的功能,我不明白为什么编译器不抱怨...... 我使用
g++ -c -g -Wall编译
任何想法?
这是一个GCC compiler extension。标准允许符合实现,因为它不会破坏任何格式正确的代码(只要它发布诊断)。当然,这不是便携式的,因此不推荐。
随着-pedantic
选项,你会得到以下警告:
warning: ISO C++ forbids variable length array ‘buf’ [-Wvla]
如果**编译器发布诊断,则允许**。 – 2013-03-01 23:12:21
哦!这是新的还是什么?我的意思是扩展 – santi 2013-03-01 23:13:03
@santi现在已经有很长一段时间了。 – 2013-03-01 23:14:15
这是一个编译器扩展。我相信你可以在这里找到重复。 – chris 2013-03-01 23:10:08
[可变长度数组](http://en.wikipedia.org/wiki/Variable-length_array) – Mahesh 2013-03-01 23:10:38
我想你会得到一个警告,如果你指定例如'-std = C++ 11'并有一个'-pedantic'选项。 – 2013-03-01 23:11:48