【问题标题】:What is the default C++ standard in an Eclipse CDT project?Eclipse CDT 项目中的默认 C++ 标准是什么?
【发布时间】:2018-04-30 00:36:56
【问题描述】:

我正在使用 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

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

【问题讨论】:

标签: c++ eclipse eclipse-cdt


【解决方案1】:

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

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

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

【讨论】:

  • 我认为默认标志实际上是-std=gnu++14 或类似的东西。基本上是带有非标准扩展的 C++ 14。
  • 我使用的是 gcc 5.4.0。 __cplusplus = 199711L 与我当前的设置。
  • @RickD。那将是 C++98。请注意,C++03 是 C++98 的一个非常小的修订版,没有显着的新特性。 C++98 和 C++03 经常互换使用。
猜你喜欢
  • 2011-05-20
  • 1970-01-01
  • 2018-04-09
  • 2012-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
相关资源
最近更新 更多