作者回复: 就像你说的一样,其实大部分“现代语言”都不希望将预处理器作为语言自身标准的一部分,这意味着你可以用一些第三方提供的预处理能力来对源码进行编译前的处理。总的来看,大部分人认为预处理器的过度使用通常会导致项目整体结构的混乱,且不利于代码调试。并且宏作为简单的文本替换也不具备语义上的完备性(宏定义时的形式无法决定其具体使用时产生的效果)。因此,从语言的角度来看,大家都更倾向于做编译时优化,尽量让语言本身的特性就可以满足预处理器的使用场景。个人理解哈~
作者回复: 实际上这个问题要从 C 的发展历史上来看,头文件的一个重要目的就是为了能够提供一套对外稳定的接口文档,供其他程序使用已经写好的 C 代码实现,以实现代码重用。当然,不要直接把它与现代语言比如 Go、Python、Rust 等具有包管理器能力的语言相比。