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

时间:2018-04-29 14:50:39

标签: c++ eclipse eclipse-cdt

我正在使用带有GCC Cross Compiler 8.6.0的Eclipse CDT 3.8.1。我知道如何在项目属性中更改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 个答案:

答案 0 :(得分:1)

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

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

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