模块这件事。
最让人心动的。
不是语法。
是“我终于不用 include 那坨东西了”。
可现实是。
你项目里有一堆头文件。
你不敢动。
也动不起。
当年:我们对头文件的依赖已经像藤蔓
你一拔。
会带起一整片。
所以很多团队的真实诉求是。
有没有一种方式。
我先不改源码。
也能把编译依赖收一收。
Header Units 的想法:把头文件当成一个“可 import 的单元”
你可以把它理解成。
“头文件模块化”。
但注意。
它不是把头文件变成真正的 module interface。
它更像把 #include 的结果缓存成一个可复用的编译产物。
你会看到的用法
import <vector>;
import <string>;
它看起来像模块。
但你 import 的是头文件单元。
不是标准库模块。
线上啪一下:你以为宏不见了,结果它还在
Header Units 不一定能隔离宏。
因为头文件本身就可能依赖宏。
它的语义本来就不干净。
所以你不能指望。
靠 Header Units 彻底摆脱宏污染。
它适合什么
你想加速编译。
你想减少重复解析。
但你暂时不想改代码结构。
Header Units 很适合做第一步。
它不适合什么
你想要清晰边界。
想要真正的封装。
想要“没 export 就不可见”。
那 Header Units 给不了。
关键结论
Header Units 更像缓存。
Modules 更像边界。
小结
如果你在维护老项目。
Header Units 是个很现实的台阶。
先踩上去。
再谈真正的 Modules。