首页 > 解决方案 > Eclipse CDT 项目中的默认 C++ 标准是什么?

问题描述

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

解决方案


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网站,最新版本是8.1。)


推荐阅读