我知道 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++ 标准?
The g++ 文档包括以下信息:
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++ 标准是什么?如何配置我的项目以使用它?