C++ 编译器在具有默认值的动态数组上抛出错误

C++ compiler throws error on dynamic array with default values

Mac g++ 使用此代码抛出编译错误:

#include <iostream>

using namespace std;

int main(int argc, char ** argv) {
    int * p = new int[5] {1,2,3};
    return 0;
}

我尝试了一个在线编译器,它编译和运行没有错误。

mac 编译器有问题吗?我可以做些什么来改变它的工作方式还是应该安装另一个 c++ 编译器?

编辑:

错误:

test.cpp:6:25: error: expected ';' at end of declaration
    int * p = new int[5] {1,2,3};

编译器目标和版本:

Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.7.0

编译命令:

g++ test.cpp 

没有根本原因不允许更复杂的初始化程序,只是 C++03 没有针对它的语法结构。在下一个版本的 C++ 中,您将能够执行类似的操作。 int* p = new int[5] {0, 1, 2, 3, 4};

您可以尝试将 -std=c++11 添加到您的命令行,应该一切正常。