C++20,如何使用 Clang-10 或 GCC11 进行编译

cpp*_*num 6 c++ c++20

我知道编译器尚未完全支持 C++20,但我真的很想学习模块和其他 C++20 内容。GCC11 和 Clang-8+ 支持模块。 C++20 的编译器支持

我已经在 Ubuntu 上安装了 Clang-10,但它仍然出现错误:

import <iostream>;
using namespace std;
int main(){
    cout << "Hello world";
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

命令:

clang++ -Wall -std=c++2a -stdlib=libc++ -fimplicit-modules -fimplicit-module-maps main.cpp -o main

clang++ -Wall -std=c++20 -stdlib=libc++ -fimplicit-modules -fimplicit-module-maps main.cpp -o main

错误:致命错误:找不到“iostream”文件

Deu*_*dit 3

默认情况下,gcc trunk使用c++17,而clang trunk使用c++14,所以你必须说编译器,你想使用c++20

如果您自己在终端中编译代码,请添加以下标志

--std=c++20
Run Code Online (Sandbox Code Playgroud)

如果您使用 Cmake 编译代码,请将以下内容添加到 CMakeLists.txt

set(CMAKE_CXX_STANDARD 20)
Run Code Online (Sandbox Code Playgroud)

如果您在某些 IDE(Codeblocks 或 Visual studio)中进行编译,则在编译器设置中的某个位置放置支持 c++20

trunk的意思是“开发主线”,所以这个编译器版本应该是官方支持的最新版本