为什么以下代码在在线 ide(gcc 7.2.0) 上有效,但在 ubuntu 上出现错误?



当我在 ubuntu(gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4((上运行以下代码时:

#include<iostream>
#include<vector>
#include<list>
using namespace std;
int main(){
vector <int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
list<int> temp;
for(auto i:v){
cout<<i<<" ";
temp.push_back(i);
}
for(auto i:temp){
cout<<i<<" ";
}
}


我收到以下错误:

try.cpp: In function ‘int main()’:
try.cpp:13:10: error: ‘i’ does not name a type
for(auto i:v){
^
try.cpp:17:1: error: expected ‘;’ before ‘for’
for(auto i:temp){
^
try.cpp:17:1: error: expected primary-expression before ‘for’
try.cpp:17:1: error: expected ‘;’ before ‘for’
try.cpp:17:1: error: expected primary-expression before ‘for’
try.cpp:17:1: error: expected ‘)’ before ‘for’
try.cpp:17:10: error: ‘i’ does not name a type
for(auto i:temp){
^
try.cpp:20:1: error: expected ‘;’ before ‘}’ token
}
^
try.cpp:20:1: error: expected primary-expression before ‘}’ token
try.cpp:20:1: error: expected ‘;’ before ‘}’ token
try.cpp:20:1: error: expected primary-expression before ‘}’ token
try.cpp:20:1: error: expected ‘)’ before ‘}’ token
try.cpp:20:1: error: expected primary-expression before ‘}’ token


但是当我在在线 ide 上运行代码时,我工作正常。
代码有什么问题?
在线 ide 上的代码链接:没有错误


您的代码使用一些 C++11 功能,例如基于范围的循环和自动说明符,但您不针对 C++11 标准进行编译。您需要通过在编译时包含-std=c++11标志来启用 C++11 支持:

g++ -std=c++11 -o try try.cpp

联机编译器使用-std=gnu++1z标志启用此功能。

相关内容

最新更新