代码在Eclipse中编译,但不在Linux上使用g ++编译

时间:2015-05-10 09:21:58

标签: c++ g++

#include <iostream>
#include <queue>
#include <string>
#include <vector>

using namespace std;

int main ()
{
struct process
{
    int burst;
    int ar;
};

vector<process> a;
// insert two processes
a.push_back({21, 42});
a.push_back({10, 20});
queue <process> names; 
names.push(a[1]); 
names.push(a[2]);
cout<<names.front().ar;
return 0; 
}

上面的代码在eclipse中运行正常,但是当我在linux上编译它时会出现很多错误。无效的论点等等。我用命令执行它:

g++ -o file_name file_name.cpp

有谁知道这些错误背后的原因?任何解决方案?

2 个答案:

答案 0 :(得分:0)

您无法在函数中定义结构。在您的情况下,struct进程在main函数中定义。

此外,您需要声明要附加到矢量的结构类型。 &#39; {21,42}&#39;没有声明一个&#39;过程&#39; type(除非你使用C ++ 11)。

答案 1 :(得分:0)

使用local classes作为模板参数和passing braced-init-list to functions只能在C ++ 11中使用。将-std=c++11-std=c++14选项传递给g ++,所有错误都将消失。请注意,选项中的所有字母均为小写。