我正在尝试访问std::popcount
,但似乎它只在C++20中存在。
当我尝试使用g++ -std=c++20 main.cpp
编译时,它会说g++:错误:无法识别命令行选项“-std=c++20”;你是指“-std=c++03”吗?
我该如何告诉g++使用c++20?
我正在使用Ubuntu 18.04
我正在尝试访问std::popcount
,但似乎它只在C++20中存在。
当我尝试使用g++ -std=c++20 main.cpp
编译时,它会说g++:错误:无法识别命令行选项“-std=c++20”;你是指“-std=c++03”吗?
我该如何告诉g++使用c++20?
我正在使用Ubuntu 18.04
从GCC 8开始,C++20特性已经可用。
为了启用C++20支持,请添加命令行参数
-std=c++20
对于G++ 9及更早版本,请使用
-std=c++2a
或者,为了在C++20特性之外还启用GNU扩展,请添加
-std=gnu++20
-std=gnu++2a
。 - Kamil我建议您尝试更新gcc。C++20是在相当新的gcc 8版本中引入的。
std::popcount
。-std=c++2a
。目前有不同版本的编译器,g++
通常与旧版本链接。对于我来说,当前版本是g++-9
,它显然不理解C++20。
C++20需要安装gcc-10
和g++-10
(以及相关依赖项)。假设您已经安装了它们,则需要运行以下命令:
g++-10 -std=c++20 main.cpp
提示:如果您想将v10作为默认版本,请更新链接的gcc
、g++
和其他相关组件,并按全名使用v9(或任何旧版本)。
编辑:根据主机操作系统的不同,可能还安装了v11和v12,但命名仍然很重要。请替换为g++-11
或g++-12
。
g++
版本过旧。您需要至少9+ 版本才能使用popcount
(并且需要使用-std=c++2a
),或者需要使用10+版本才能编写C++20代码。 - Barryset(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++2a") set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
- Kevin Chan