2013-04-05 62 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功能。

坦率地说,我发现它并不总是能正常工作。不知道为什么会这样,但我学会了避免它。

相关问题