【发布时间】:2021-04-26 06:18:25
【问题描述】:
Clang 和 GCC(也许还有 MSVC?)目前正在为他们的模块实现使用两步编译:
- 生成 BMI/CMI(MSVC 的 IPR,如果它仍然这样做?)以供其他人的导入使用。
- 生成要馈送到链接器的目标文件。
生成 BMI/CMI 但不生成目标文件的模块似乎有一些可能的用途,例如仅导出用于条件编译的类型或 constexpr 变量的模块。
据我从标准中可以理解,没有什么说我必须生成/链接对象文件。所以我想知道在使用这样的模块时我是否遗漏了一些明显的东西,如果我们希望工具支持这种“作为模块构建,而不是作为对象构建”的工作流程?
【问题讨论】:
-
"仅导出用于条件编译的类型或 constexpr 变量的模块" 编译器如何知道这些定义仅“用于条件编译”?
-
嗨@NicolBolas,它不是,这只是我最近一直在玩的一个用例......安迪。
标签: c++ c++20 c++-modules