早在 VS2019 v16.10 版本的时候,我们就官宣了对 C++ 模块(以及几乎所有其他 C++ 20 特性)的全面支持,包括 MSVC 编译器工具集,静态分析,智能感知和调试器等,而实现模块需要将 C++ 代码实现为一种内部的临时表示形式。
今天,我们高兴地宣布将 IFC SDK 开源,它是 Microsoft 对 IFC 规范的一个实现。
IFC 规范将 C++ 程序形式化为适合基于语义操作的数据。
我们开源 IFC SDK 的目的是,希望加速 C++ 模块在 C++ 社区和 C++ 工具生态系统中的广泛使用和实施。
什么是 IFC 以及它的作用是什么?
C++ 模块接口(或头单元)源文件的一种常用编译策略是将源文件(恰好一次)转换为适合在其他源文件中重用的内部表示形式。这种中间形式通常称为构建模块接口(BMI)。IFC文件则是 BMI 概念的实现。IFC 文件是与 C++ 程序的语义有关的所有信息的持久性表示。
除了编译器直接使用C++模块外,还可以通过非编译器工具检查 IFC,以便对C++源文件进行基于语义的探索。这些工具对于探索者了解如何以适合 C++ 模块实现的形式表示 C++ 源代码级构造非常有用。
IFC SDK 的使用
IFC SDK 目前是一个实验项目。它侧重于提供支持 IFC 文件读写的数据类型和源代码。此 SDK 与 MSVC 编译器前端中用于实现 C++ 模块的经过测试的实现相同。
这些数据类型可以直接进行内存映射,以实现可扩展和高效的处理。
该项目还具有用于格式化或查看 IFC 文件的实用程序。我们欢迎并且正在寻找能够弥补SDK和规范之间差距的贡献,以及支持从 C++20 及更高版本开始的 C++ 标准所需的更改。
总结
继续老老实实使用传统 C++ 头文件和类,除非有一天 C++ 模块更合适我的项目。
我是一个既开放又保守的开发人。
最后
Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。
本文来自:《Open Sourcing IFC SDK for C++ Modules》