我知道编译器还没有完全支持C++20,但我真的很想学习模块和其他C++20内容。GCC11和Clang-8+支持模块.C++20的编译器支持
我已经在我的Ubuntu上安装了Clang-10,但是它仍然会给我带来错误:
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”文件未找到
发布于 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相匹配,也可能不匹配。有了这些,您的示例将是:
import std.core;
using namespace std;
int main(){
cout << "Hello world";
}据我所见,libc++和libstdc++都没有实现任何模块。
发布于 2021-02-24 10:19:26
默认情况下,gcc主干使用c++17,clang主干使用c++14,所以您必须说编译器,您想使用c++20。
如果要自己在终端中编译代码,请添加以下标志
--std=c++2a如果使用Cmake编译代码,则请将以下内容添加到CMakeLists.txt中
set(CMAKE_CXX_STANDARD 20)如果您在某个IDE(Codeblock或Visual )中编译,则在编译器设置中放置支持c++20的位置。
主干的意思是“开发的主线”,所以这个编译器版本应该得到最新的官方支持。
https://stackoverflow.com/questions/66348630
复制相似问题