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

时间:2018-02-05 18:04:58

标签: c++ gcc cmake g++

我知道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 [~] → 

我有以下g ++编译器目录,我使用原生makefile来构建C ++语言

λ bgarcial [include/c++/7] → pwd
/usr/include/c++/7

λ bgarcial [include/c++/7] →

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

g++ documentation包含以下信息:

  

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

它还包含这个有趣的内容:

  

默认情况下,GCC还为C ++语言提供了一些额外的扩展,这些扩展在极少数情况下与C ++标准冲突。请参阅选项控制C ++方言。使用上面列出的-std选项会禁用这些扩展,因为它们与所选的C ++标准版本冲突。

     

您也可以使用-std = gnu ++ 98(对于带有GNU扩展的C ++ 98)显式选择C ++语言的扩展版本,或者-std = gnu ++ 11(对于带有GNU的C ++ 11)扩展),或-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

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

我问这个是因为在第一个例子中我假设我使用的是带有GNU扩展的C ++ 14,这与上面引用的g ++编译器文档有关。 在某些情况下,我没有使用某些函数或库,但我不知道这是否是由于使用的标准或其他原因。

使用的推荐C ++标准是什么?如何配置项目以使用它?

1 个答案:

答案 0 :(得分:4)

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

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