2019年3月8日 下午12:53
头文件重复包含和变量重复定义 - 代码面包 - CSDN博客
编译:
- C/c++编译的基本单元是.c或.cpp文件
- 其实就是一个根据include不断展开的过程
- 一个.c或.cpp会生成一个编译结果.o文件
- 各个基本单元的编译是相互独立的,#ifndef等条件编译只能保证在一个基本单元(单独的.c或.cpp文件)中头文件不会被重复编译,但是 无法保证两个或者更多基本单元中相同的头文件不会被重复编译
链接:

那么到底怎么样才能避免重复定义呢?
- 其实避免重复定义关键是要避免重复编译,防止头文件重复包含是有效避免重复编译的方法
- 但是最好的方法还是记住那句话:头文件尽量只有声明,不要有定义。这么做不仅仅可以减弱文件间的编译依存关系,减少编译带来的时间性能消耗,更重要的是可以防止重复定义现象的发生,防止程序崩溃。