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

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



/%E4%BB%A3%E7%A0%81%E9%98%85%E8%AF%BB/MVE%E4%B8%AD%E7%84%A6%E8%B7%9D%E4%B8%8E%E7%89%B9%E5%BE%81%E5%BD%92%E4%B8%80%E5%8C%96/E786CE1E-0FDF-4762-8B27-2021300323F4.png)
/%E4%BB%A3%E7%A0%81%E9%98%85%E8%AF%BB/MVE%E4%B8%AD%E7%84%A6%E8%B7%9D%E4%B8%8E%E7%89%B9%E5%BE%81%E5%BD%92%E4%B8%80%E5%8C%96/4FBC6A4C-15B9-4EA6-9155-CA6FFF852A92.png)
/%E7%9F%A5%E8%AF%86%E7%82%B9/RANSAC-%E9%9A%8F%E6%9C%BA%E4%B8%80%E8%87%B4%E6%80%A7%E9%87%87%E6%A0%B7/98B3E7D3-75D0-4D0C-AC93-FCD0D8906535.png)
/%E4%BB%A3%E7%A0%81%E9%98%85%E8%AF%BB/tracks%E7%9A%84%E7%90%86%E8%A7%A3/53ABC33F-1F7B-405D-9C7A-35675EECC0B0.png)
/%E7%9F%A5%E8%AF%86%E7%82%B9/%E5%8D%95%E7%9B%B8%E6%9C%BA%E5%92%8C%E5%A4%9A%E7%9B%B8%E6%9C%BA%E7%9A%84ba%E7%9A%84%E4%B8%8D%E5%90%8C/9BEC2DBE-9F43-4760-A886-E5C819C9062D.png)