代码之家  ›  专栏  ›  技术社区  ›  Rick D.

Eclipse CDT项目中默认的C++标准是什么?

  •  0
  • Rick D.  · 技术社区  · 7 年前

    我正在使用Eclipse CDT 3.8.1和GCC交叉编译器8.6.0。我知道如何在项目属性中更改C++标准,但我不知道默认情况下使用的是什么标准。

    我知道默认值不是C++11,Eclipse语言支持页面也没有提到C++03,所以我怀疑默认值是C++98。但是,Eclipse CDT必须支持C++03,因为添加编译器标志std=C++03不会导致任何错误。 https://www.eclipse.org/community/eclipse_newsletter/2017/april/article3.php

    创建新项目时的默认标准是什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   HighCommander4    7 年前

    Eclipse的解析器本身没有C++标准模式的概念。它将识别已在其解析器中实现的所有C++功能(在编写本文时,这些功能都是C++98和C++11功能,一些(但不是全部)C++14功能,以及少数C++17功能)。

    然而,标准库标题通常包含以表示C++标准版本的宏为条件的部分(例如。 #if __cplusplus >= 201103 是“C++11或更高版本”的常见检查。为了确定这些宏的值,Eclipse调用项目工具链中指定的编译器来发现内置宏。发现的价值,例如 __cplusplus 宏将取决于标准模式 编译器 运行此调用。

    正如您所提到的,此编译器调用的标志在项目属性中指定。如果没有提供标志,编译器将使用其默认模式。我相信GCC一直在使用 -std=c++14 作为GCC 6以后的默认值。(虽然我不太清楚“GCC交叉编译器8.6.0”是什么 GCC website ,最新版本为8.1。)