如何在 g++ 中将 -std=c++11 定义为默认值

how to define -std=c++11 as default in g++

我在我的 C++ 程序中使用了我需要的一些特性 -std=c++11 在 g++ 中设置的选项

是否可以将此选项设置为默认选项,而不必在我编译时一直使用它?

或者如何在 Makefile 中设置它。

是的,您通常在 Makefile 中进行设置:

CXXFLAGS=-std=c++11 

您还可以通过 autoconfcmake 或您可能部署的任何其他元构建工具检测合适的编译器。

你当然玩游戏定义 g++11g++ -std=c++11 但这样的设置是不可移植的。

g++-6.* 将默认为 c++14,因此在某些情况下此开关将是隐式的。但是所有那些带有 g++-4.4.* 的 RHEL 和 CentOS boxen 可能需要很长时间才能消失。那些甚至可能无法处理您当前的项目...

是,升级到 GCC 6.1:

The C++ frontend now defaults to C++14 standard instead of C++98

来自https://gcc.gnu.org/ml/gcc/2016-04/msg00244.html

您可以让 makefile 执行以下操作(这是一个没有变量的简单版本)。

out: source.cpp
    g++ -std=c++11 source.cpp -o out

使用您选择的构建系统。可以是 makeSConsCMakeqmake 或其他,并设置所需的选项。只需 30 秒即可完成。

或者,将您的编译器升级到默认使用 C++11 的版本。