代码在Eclipse中编译,而不是Linux上的G
Code compiles in Eclipse but not with g++ on Linux
#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 ,所有错误将消失。请注意,该选项中的所有字母均在较低的情况下。
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- C/C++ Linux 上的多线程服务器/客户端崩溃
- Linux 上的黑屏,但 Windows 上不是
- 从Raspberry Pi / Linux上的Python脚本运行和停止C++程序
- 使用eBPF拦截Linux上的所有传出/传入流量
- 如何在 Oracle Linux 上的 Eclipse 中编译和链接 boost 库
- C++ Linux 上的插件 ABI 问题
- 如何在 Linux 上的 C/C++ 中使用 ipv6 udp 套接字进行多播?
- Linux 上的 .NET Core - 元帅结构
- Linux上的PTHREAD_CANCEL()导致异常/Coredump,为什么
- 该命令在QProcess中启动,不会返回Linux上的响应
- 在RHEL 7上编译MySqlClient,并在RHEL 6上运行(Linux上的G )
- 跨平台套接字发送,Linux 上的缓冲区常量无效* Windows上的常量字符*,最佳处理方式
- Linux 上的键码表
- 如何检测 CDRom 是否是 Linux 上的 DVD
- Linux 上的 FreeImage 返回 -1 格式
- 在 Linux 上的 Visual Studio 中链接两个项目
- QT 5.8(Ubuntu 16.04)Linux上的应用程序部署
- 除了 Linux 上的源代码和编译 (GCC) 之外,有没有办法在 Windows 中托管 IDE
- 写入 Linux 上的共享内存时出现周期性延迟峰值