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

问题描述 投票:0回答:1

我知道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)或-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

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

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

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

c++ gcc cmake g++
1个回答
4
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.