如何在我的g ++编译器中满足C ++标准版本?

bga*_*ial 0 c++ gcc g++ cmake

我知道C ++有标准而不是版本,因此,它们的发布由规范管理(例如C99,C ++ 11等)

C ++编译器具有版本,并且每个版本都可以支持多种c ++标准。

关于上述内容,我找到了我的g ++版本编译器,即7.2.0

? bgarcial [~] ? g++ --version
g++ (Ubuntu 7.2.0-8ubuntu3) 7.2.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

? bgarcial [~] ? 
Run Code Online (Sandbox Code Playgroud)

我的g ++编译器具有以下目录,我正在使用本机Makefile以C ++语言进行构建

? bgarcial [include/c++/7] ? pwd
/usr/include/c++/7

? bgarcial [include/c++/7] ?
Run Code Online (Sandbox Code Playgroud)

如何确定我的g ++编译器支持哪些C ++标准?

所述克++文档包括以下信息:

GCC支持1998年发布的原始ISO C ++标准以及2011和2014年的修订版。如果未提供C ++语言方言选项,则默认值为-std = gnu ++ 14。

它还包含以下有趣的内容:

默认情况下,GCC还提供了一些其他C ++语言扩展,这些扩展在极少数情况下与C ++标准冲突。请参阅控制C ++语言的选项。如果上面的-std选项与所选的C ++标准版本冲突,则禁用这些扩展。

您也可以使用-std = gnu ++ 98(对于具有GNU扩展的C ++ 98)或-std = gnu ++ 11(对于具有GNU扩展的C ++ 11)明确地选择C ++语言的扩展版本,或-std = gnu ++ 14(对于具有GNU扩展的C ++ 14)或-std = gnu ++ 1z(对于具有GNU扩展的C ++ 1z)。

在给定的C ++项目中,如何指定要使用的C ++标准/规范类型?

在CMakeLists.txt中可能是?要么 ...

作为标记建立一些基本文件?例如以下内容:

g++ client.cpp main.cpp -o client.out -lzmq -std=gnu++11
Run Code Online (Sandbox Code Playgroud)

推荐的C ++标准/规范是什么。

我之所以这样问,是因为我首先假设我使用的是带有GNU扩展的C ++ 14,与之前引用的g ++编译器文档有关。在某些情况下,我没有使用某些函数或库,但是我不知道这是由于使用的标准还是其他原因。

建议使用什么C ++标准?如何配置我的项目以使用它?

小智 5

您可以使用-std开关指定标准

$ g ++ -std = c ++ 11 your_file.cpp -o your_program

  • 你好,我怎样才能永久做到这一点?不需要添加 -std 标志? (3认同)