为什么以下代码在在线 ide(gcc 7.2.0) 上有效,但在 ubuntu 上出现错误?
Why does the following code work on online ide(gcc 7.2.0) but gives error on 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
标志启用此功能。
相关文章:
- 点云库在VS 2019中不起作用,但在VS 2017中确实有效
- 为什么以下代码在在线 ide(gcc 7.2.0) 上有效,但在 ubuntu 上出现错误?
- 类外的前向声明有效,但在嵌套时无效
- 将指针传递给函数在简单的情况下有效,但在"class" -izing 之后不起作用
- 为什么这段代码在Visual Studio中有效,但在gcc中失败
- 程序在C++ Tutor中执行时有效,但在其他任何地方都不起作用
- 程序有效,但在 20-30 秒后随机关闭
- 作为模板非类型参数的 C 字符串在 gcc 6.3 中有效,但在 Visual Studio 2017(x64 为 19
- 将流定义为私有类变量似乎在Linux下有效,但在WindowsVisualStudio下无效
- 在C++中嵌入Python:在Python脚本中导入模块在一个函数调用过程中有效,但在另一个调用过程中无效
- 为什么这个取消注释的宏在 clang 中无效,但在 msvc 中有效
- Tensorflow模型在Python中有效,但在C++中无效
- 为什么这个逻辑在我的主循环上有效,但在方法上不起作用
- C++代码在 Gedit 中有效,但在 VS 中不起作用(它只是打印"按任意键退出......"。消息)
- Exe不是有效的win32应用程序,但在64位上运行
- glGenVertexArrays在主循环中不创建唯一的VAO,但在其他情况下有效
- 为什么 decltype 在这里有效但不能自动?
- 为什么将boost::move()的返回值分配给非常数引用在C++0x模式下失败,但在C++03模式下有效
- 分段错误(核心转储) - 代码在 VS 中有效,但在 Linux 终端中不起作用
- 为什么从字符串常量到"char*"的转换在 C 中有效,但在C++中无效