2013-03-01 133 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