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
添加到您的命令行,应该一切正常。
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
添加到您的命令行,应该一切正常。