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 に答える