首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用c++20编译clang++模块头单元

如何用c++20编译clang++模块头单元
EN

Stack Overflow用户
提问于 2021-03-11 07:08:07
回答 1查看 400关注 0票数 1

编译这个简单的程序时:(用clang++-11 -fmodules main.cpp -o main.o -std=c++2a)

代码语言:javascript
复制
// main.cpp
import "pch1.h";

int main() {
    std::cout << "Hello" << std::endl;
}

我收到以下错误消息:

代码语言:javascript
复制
main.cpp:3:8: error: header file "pch1.h" (aka './pch1.h') cannot be imported because it is not known to be a header unit

显然,在使用头文件之前,我需要对它做一些处理,但是clang希望看到哪些标志呢?

问题有两个:

  • 什么标志做,clang想编译/预编译头单元
  • 什么标志做clang想把标题单元输入main.cpp
EN

回答 1

Stack Overflow用户

发布于 2021-04-30 08:58:36

在花了许多小时研究CLang的代码和选项之后,我没有找到如何创建和使用头单元的方法。

但我找到了一种完全兼容的方法,可以将头作为模块导入。我将其描述为here,而here是对STD标头情况的描述。

因此,根据链接答案,import <iostream>;完全等同于做import std_mod;。在这两种情况下,都会导出所有定义,并保留所有宏。而且,在这两种情况下,您根本不需要对(或std)头进行任何修改。

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

https://stackoverflow.com/questions/66577868

复制
相关文章

相似问题

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