Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么g++;没有可变长度数组初始化 我使用C++ 11,这是一个示例代码片段,在那里我不能理解语言的内部工作。_C++_C++11_G++ - Fatal编程技术网

为什么g++;没有可变长度数组初始化 我使用C++ 11,这是一个示例代码片段,在那里我不能理解语言的内部工作。

为什么g++;没有可变长度数组初始化 我使用C++ 11,这是一个示例代码片段,在那里我不能理解语言的内部工作。,c++,c++11,g++,C++,C++11,G++,这很有效- int main(){ int n; cin>>n; int a[n]; // THIS WORKS due the the extensions 但是,这不起作用- int main(){ int n; cin>>n; int a[n] = {0} // This does not work; 我使用以下方法编制此文件: g++ -std=c++0x file.cpp -o file 我知道VLA不是C++标准的一部分,GNU C++通过编译器扩展提供

这很有效-

int main(){
int n;
cin>>n;
int a[n]; // THIS WORKS due the the extensions
但是,这不起作用-

int main(){
int n;
cin>>n;
int a[n] = {0} // This does not work;
我使用以下方法编制此文件:

g++ -std=c++0x file.cpp -o file
我知道VLA不是C++标准的一部分,GNU C++通过编译器扩展提供它。
  • 我也知道内存是在运行时使用alloca分配的
  • 我不明白的是,如果A工作,为什么B不能工作

  • B显然可以让它工作。但是海湾合作委员会的人没有因为任何原因。我不认为追踪那些认为“足够好”的人是值得的。这在C中也是不合法的,扩展在很大程度上是为了与C兼容。实际上,g++(自4.9版起)在这里接受您的代码,您所说的“不工作”是什么意思?如果初始值设定项的长度数组的长度?@Marc,B给出了一个编译时错误-“a可能尚未初始化”行为似乎很快就会改变: