C++20 not available



我目前正在尝试使用gcc/g++构建代码,如下所示:

g++-10 -std=c++2a -Wall -Wextra -c -o hw01.o hw01.cpp

(与gcc-10、gcc、g++的结果相同(我的代码中有一个静态检查:

static_assert(__cplusplus >= 202002L);

遗憾的是,它每次都失败了。据我所知,使用的C++版本取决于gcc及其版本。gcc-10的版本为10.3.0,而普通的gcc命令使用的版本为9.4.0,因此两者都应该能够使用build命令中指定的C++20。然而,当查看VsCode时,变量__cplusplus的求值结果为201402L,因此使断言失败。

即使在卸载/重新安装编译器(或sudo-apt-remove-cpp(时,这个问题仍然存在。

有什么帮助吗?如何让我的系统使用较新的C++版本?

附言:我正在开发一个Ubuntu WSL(主机系统是Windows 10(

编辑:由于大多数建议都是忽略静态测试和不同值__cplusplus的f.e.测试,或者干脆放弃测试,所以我这样做是为了大学作业。satic测试是不可谈判的,不能改变,也不能改变。我必须通过更改本地C++版本的构建值来通过测试,我只是不知道怎么做。

在未来的标准版本被标准化之前,未来版本的实际值是未知的。编译器;支持";标准化之前的新版本将不得不选择比旧版本大的值;标准";价值

不过,您可以做的是检查__cplusplus是否大于以前标准的版本。例如,C++17中的__cplusplus具有值201703,因此201709的GCC 10.3返回的值大于该值,因此您"知道";您有一个比C++17更新的版本。

__cplusplus旨在为以下问题提供答案:;这个实现声称支持什么版本的C++"这是一个非常宽泛的问题,特别是在";支持";。

GCC 10.3认为其对C++20的支持不足以满足";支持";。因此,它并不声称";支持";C++20,即使这是您要求的版本。

这不是你可以改变的。没有编译器选项可以强制GCC以不同的方式回答问题。

如果您不能将GCC升级到愿意声明";支持";对于C++20,如果你不能删除或更改更改更改,那么你就倒霉了。

相关内容

  • 没有找到相关文章

最新更新