我试图访问std::popcount,但它似乎只存在于C++ 20中。当我尝试使用g++ -std=c++20 main.cpp编译时,它显示为g++: error: unrecognized command line option '-std=c++20'; did you mean '-std=c++03'我如何告诉g使用c 20?我使用的是Ubuntu 18.04
std::popcount
g++ -std=c++20 main.cpp
g++: error: unrecognized command line option '-std=c++20'; did you mean '-std=c++03'
b5buobof1#
C20特性自GCC 8起可用。要启用C20支持,请添加命令行参数-std=c++20适用于G++ 9及以后版本-std=c++2a或者,要启用除C++20功能之外的GNU扩展,请添加-std=gnu++20
-std=c++20
-std=c++2a
-std=gnu++20
pbpqsu0x2#
我会尝试更新gcc。C++ 20是在gcc版本8中引入的,这是相当新的。
ghhkc1vu3#
如果可以的话,你可以升级到Ubuntu 20.04 LTS,其中包含GCC版本9,这样你就可以使用C++ 20,也就是std::popcount注意:在GCC 9和更早版本中使用-std=c++2a
mzillmmw4#
有不同版本的编译器存在,g++通常是链接到旧的。对我来说,目前的是g++-9,它显然不理解C20。C20需要安装gcc-10和g++-10(以及依赖项)。假设您已经安装了它们,那么您需要运行:
g++
g++-9
gcc-10
g++-10
g++-10 -std=c++20 main.cpp
PS:如果你想默认使用v10,那么更新gcc,g++和其他相关的链接,并使用v9(或任何旧的)的全名。编辑:根据主机操作系统,也可以安装v11和v12,但命名仍然很重要。请替换为g++-11或g++-12。
gcc
g++-11
g++-12
4条答案
按热度按时间b5buobof1#
C20特性自GCC 8起可用。
要启用C20支持,请添加命令行参数
-std=c++20
适用于G++ 9及以后版本
-std=c++2a
或者,要启用除C++20功能之外的GNU扩展,请添加
-std=gnu++20
pbpqsu0x2#
我会尝试更新gcc。C++ 20是在gcc版本8中引入的,这是相当新的。
ghhkc1vu3#
如果可以的话,你可以升级到Ubuntu 20.04 LTS,其中包含GCC版本9,这样你就可以使用C++ 20,也就是
std::popcount
注意:在GCC 9和更早版本中使用
-std=c++2a
mzillmmw4#
有不同版本的编译器存在,
g++
通常是链接到旧的。对我来说,目前的是g++-9
,它显然不理解C20。C20需要安装
gcc-10
和g++-10
(以及依赖项)。假设您已经安装了它们,那么您需要运行:PS:如果你想默认使用v10,那么更新
gcc
,g++
和其他相关的链接,并使用v9(或任何旧的)的全名。编辑:根据主机操作系统,也可以安装v11和v12,但命名仍然很重要。请替换为
g++-11
或g++-12
。