![编译错误,g++ 和 c++11](https://linux22.com/image/981517/%E7%BC%96%E8%AF%91%E9%94%99%E8%AF%AF%EF%BC%8Cg%2B%2B%20%E5%92%8C%20c%2B%2B11%20.png)
我试图通过 g++ 编译此代码,
#include <iostream>
#include <set>
using namespace std;
std::set<int> s;
int main(){
for(int i=0;i<10;i++) s.insert(i);
for(auto target: s){
cout<<target<<endl;
}
return 0;
}
但是 g++ 4.8 给了我这个错误:
ali@Melkor ~/Desktop/Project $ g++ a.cpp
a.cpp: In function ‘int main()’:
a.cpp:10:10: error: ‘target’ does not name a type
for(auto target: s){
^
a.cpp:14:1: error: expected ‘;’ before ‘return’
return 0;
^
a.cpp:14:1: error: expected primary-expression before ‘return’
a.cpp:14:1: error: expected ‘;’ before ‘return’
a.cpp:14:1: error: expected primary-expression before ‘return’
a.cpp:14:1: error: expected ‘)’ before ‘return’
ali@Melkor ~/Desktop/Project $
我的代码有什么问题吗?
答案1
您的代码没有问题,但是汽车说明符自 C++ 编程语言标准的 c++11 版本开始存在。
您必须使用
g++ -std=c++11 a.cpp
编译你的代码。