1

请参阅以下代码:

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++ 标准中找不到任何支持它的描述。它是编译器的扩展内容吗?我在哪里可以找到关于它的一些描述?

4

2 回答 2

3

不,C++ 标准不支持VLA

于 2013-04-05T10:21:35.953 回答
3

您的编译器正在尝试使用非标准的可变长度数组功能。

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

于 2013-04-05T10:22:25.610 回答