有没有办法在Eclipse 2020-03(CDT 9.11)中启用对C++20功能的支持?我的意思是摆脱不正确的语法突出显示,例如忽略C++20标准中定义的'concept'、'requires'和其他新添加的关键字。我安装并使用了支持这些功能的GCC10,所以代码可以无问题构建,但是Eclipse CDT仍然抱怨...感谢任何愿意提供建议的人。Martin
有没有办法在Eclipse 2020-03(CDT 9.11)中启用对C++20功能的支持?我的意思是摆脱不正确的语法突出显示,例如忽略C++20标准中定义的'concept'、'requires'和其他新添加的关键字。我安装并使用了支持这些功能的GCC10,所以代码可以无问题构建,但是Eclipse CDT仍然抱怨...感谢任何愿意提供建议的人。Martin
目前Eclipse CDT不支持C++20。实际上,对于C++17的支持已经相当高,但尚未完全完成。如果需要C++20支持,最好使用另一个IDE,或者如果需要的话,在CDT中实现支持。
现在有一种方法,我刚刚启用并确认了它。
要在Eclipse中按项目启用C++ v20(我还没有找到如何将其设置为所有项目的默认值),请按照以下步骤操作:
要为特定项目启用C++ v20,请右键单击项目,选择属性> C/C++构建> 设置> GCC C++编译器> 其他选项,在“其他标志”框中添加“--std=c++20”。
您可以使用以下代码进行验证:
#include <iostream>
using namespace std;
int main() {
if (__cplusplus == 202002L)
std::cout << "Your running C++20" << endl;
else if (__cplusplus == 201703L)
std::cout << "Your running C++17" << endl;
else if (__cplusplus == 201402L)
std::cout << "Your running C++14" << endl;
else if (__cplusplus == 201103L)
std::cout << "Your running C++11" << endl;
else if (__cplusplus == 199711L)
std::cout << "Your running C++98" << endl;
else
std::cout << "pre-standard C++" << endl;
return 0;
}
为了在 Visual Studio Code 上实现同样的功能,这个网址帮助我完成了它:
https://www.youtube.com/watch?v=Mw7Jfzavx0U
如果有人知道如何将此设置为所有C/C++项目的默认设置,我很想知道。 (仍在寻找答案,如果找到答案会回来更新)。
consteval
。但只要编译器工作正常,并在项目设置中正确配置,所有编译器输出也会产生正确的Eclipse标记。(我在Windows上使用winlibs.com提供的GCC 10.2.0编译器。) - xamidconsteval
)可以在Windows、首选项、常规、编辑器、文本编辑器、注释、C/C++出现中禁用。我只禁用了“垂直标尺”,以便仍然标记新关键字,但禁用所有标记将不会留下任何迹象。 - xamid