为什么指定的初始化程序在C++中工作?

PJM*_*let 7 c++

在网上搜索了一下后,我得出的结论是,指定的初始值设定项不是任何C++标准的一部分,但是在使用g ++编译这段代码时(4.7.0)

#include <iostream>
using namespace std;

int main(int argc, char** argv)
{
    int test[2][2] ={
        [0]={1,2},
        [1]={3,4},
    };

    for (int x = 0; x<2;x++)
    {
        for (int y = 0; y<2; y++)
        {
            cout << test[x][y] << endl;
        }
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它会编译并运行正常.

我错过了什么吗?从我读过的所有内容来看,C++不应该支持这种类型的代码.

Vla*_*cow 0

每个编译器通常都有自己的语言扩展。它对于 g++ 和 MS VC++ 等有效。例如,在 MS VC++ 中,您可以为每个使用语句。