代码在Eclipse中编译,而不是Linux上的G

Code compiles in Eclipse but not with g++ on Linux

本文关键字:Linux 上的 Eclipse 编译 代码      更新时间:2023-10-16
#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

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

您需要将struct process的定义移出主要功能:

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

此外,由于您使用了初始化列表,因此必须在GCC中启用C 11 Suport:

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

您无法在功能中定义结构。在您的情况下,结构过程是在主函数中定义的。

另外,您需要声明要附加到向量的结构的类型。'{21,42}'不会声明"过程"类型(除非您使用C 11)。

使用本地类用作模板参数,并将Braced-Init-list传递给函数,仅在C 11时才有可能。将-std=c++11-std=c++14选项传递给G ,所有错误将消失。请注意,该选项中的所有字母均在较低的情况下。