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

C++ 代码在Eclipse中编译,但不使用g++;在Linux上,c++,g++,C++,G++,有人知道这些错误背后的原因吗?有什么解决方案吗?您需要将struct process的定义移出主函数: g++ -o file_name file_name.cpp 此外,由于使用初始值设定项列表,因此必须在GCC中启用C++11支持: struct process { int burst; int ar; }; int main () { ... } 不能在函数中定义结构。在您的例子中,struct进程是在main函数中定义的 此外,还需要声明要附加到向量的结构类

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

您需要将
struct process
的定义移出主函数:

g++ -o file_name file_name.cpp
此外,由于使用初始值设定项列表,因此必须在GCC中启用C++11支持:

struct process
{
    int burst;
    int ar;
};

int main ()
{
    ...
}

不能在函数中定义结构。在您的例子中,struct进程是在main函数中定义的

此外,还需要声明要附加到向量的结构类型。
“{21,42}”不声明“进程”类型(除非您使用C++11)。

使用作为模板参数,并且仅在C++11之后才可能。将
-std=c++11
-std=c++14
选项传递给g++,所有错误都将消失。请注意,选项中的所有字母都是小写。

感谢$ur的更正。所有的错误都消失了。但是仍然有一个a.push_back({21,42});错误是:在标记“}”@RanaJunaidJaved之前需要primerey表达式,您确切地得到了哪些错误?将它们添加到您的问题中当我使用-std=c++11执行命令时,它会显示无法识别的命令-std=c++11。那么您的GCC版本是。您可以尝试改用
-std=c++0x
或使用更新版本的GCC.GCC 4.7及更高版本支持c++11,请使用g++--versionTanks检查您的版本以获得回复。将struct移出主函数后,仍然存在一个错误,该错误出现在a.push_back({24,42})上,它说:“}”标记之前应该有主表达式。@RanaJunaidJaved该表达式需要C++11支持。您需要通过在命令行上传递
-std=c++11
来打开它。@pmr我传递并执行了如下命令:g++-std=c++11-o file file.cpp,但它显示无法识别的命令-std=c++11。?
struct process
{
    int burst;
    int ar;
};

int main ()
{
    ...
}
g++ -std=c++11 -o file_name file_name.cpp