首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++20,如何使用Clang-10或GCC11编译

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

Stack Overflow用户
提问于 2021-02-24 10:05:25
回答 2查看 5.5K关注 0票数 4

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

我已经在我的Ubuntu上安装了Clang-10,但是它仍然会给我带来错误:

代码语言:javascript
复制
import <iostream>;
using namespace std;
int main(){
    cout << "Hello world";
}

我做错了什么?

命令:

clang++ -Wall -std=c++2a -stdlib=libc++ -f隐式模块-f隐式模块-映射main.cpp -o main clang++ -Wall -std=c++20 -stdlib=libc++ -f隐式模块-f隐式模块-映射main.cpp -o main

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

EN

回答 2

Stack Overflow用户

发布于 2021-02-24 10:29:23

尽管c++20添加了模块,但c++20标准库没有公开任何模块。

微软已经实现了一些标准库模块,这些模块可能与未来的c++标准:https://learn.microsoft.com/en-us/cpp/cpp/modules-cpp?view=msvc-160#consume-the-c-standard-library-as-modules相匹配,也可能不匹配。有了这些,您的示例将是:

代码语言:javascript
复制
import std.core;

using namespace std;
int main(){
    cout << "Hello world";
}

据我所见,libc++和libstdc++都没有实现任何模块。

票数 2
EN

Stack Overflow用户

发布于 2021-02-24 10:19:26

默认情况下,gcc主干使用c++17,clang主干使用c++14,所以您必须说编译器,您想使用c++20。

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

代码语言:javascript
复制
--std=c++2a

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

代码语言:javascript
复制
set(CMAKE_CXX_STANDARD 20)

如果您在某个IDE(Codeblock或Visual )中编译,则在编译器设置中放置支持c++20的位置。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66348630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档