2013-04-05 49 views
1

參見以下代碼:C++標準是否支持非常量數據成員作爲數組邊界?

class X { 
    int a; 
public: 
    void foo() { 
     char arr[a]; // a is not a constant variable, but g++ doesn't report error, why? 
    } 
}; 

我一直認爲只有常量表達式可以以數組邊界被使用,直到今天我遇到上面的奇怪的代碼。 g ++和clang ++都可以成功編譯它。但是我無法在C++標準中找到任何支持它的描述。它是編譯器的擴展內容嗎?我在哪裏可以找到關於它的一些描述?

+0

[在C++書籍中,數組綁定必須是常量表達式,但爲什麼下面的代碼有效?](http://stackoverflow.com/questions/5947661/in-c-books-array-bound-must -BE-常數表達式 - 丁爲什麼最以下-COD) – 2013-04-05 11:12:41

回答

3

你的編譯器試圖使用非標準Variable-Length Arrays功能。

坦率地說,我發現它並不總是能正常工作。不知道爲什麼會這樣,但我學會了避免它。

相關問題