sha*_*oth 2 c c++ header header-files
可能重复:
编写没有标题的C++,最佳做法?
受这个问题的启发- OP只是发现标题混淆和令人沮丧的概念,这是他的主观体验.
现在有没有客观原因和方案来避免在C或C++编码时的标题?
没有客观原因,只有非理性的原因是由其他语言的经验引起的主观偏见所导致的标题不存在作为一个概念.
编译单元是C和C++编译器的基本概念.编译单元必须能够访问源代码级别的所有声明才能访问其他编译单元提供的功能,并且唯一逻辑上一致的方法是确保发布者和功能消费者看到声明是为了让他们共享源代码对于那些声明.标题是实现这一目标的自然方式.
作为一个位更多的技术吧,头是不是C(或C++)的概念,本身.它们是预处理器的概念.处理源文件时,只要预处理器遇到#include指令,它就会将指令替换为所引用的头的全部内容,以递归方式扩展#include头本身中的任何指令.当编译器正确启动时,它只会看到包含完成其工作所需的所有声明的单个"文件".
关键是,无论好坏,标头是组织复杂的C和C++代码库的标准方法.您可以使用#ifdefs 来玩乐趣和游戏,将"标题"和实现放在一个源文件中,但这对宇宙中的每个工具链都有效,这意味着预处理器还有很多工作要做,从而大大减慢了构建速度.