c++头文件注意事项
- 头文件是你(定义头文件的人)和代码使用者之间的合同( 非强制)
- 编译器通过强制使用者在使用前声明函数来落实该合同(强制)
- 在所有调用(使用者)的地方,及定义(创造者)的地方都要include头文件
- 如果有多重使用者,仅被上级的直接使用者包含一次即可
- 预处理时将.h和.cpp文件连接形成编译前文件
- .h文件中只能有声明,不可有定义,否则抄进.cpp后会出现重复定义的错误
- 头文件通常包含只能被定义一次的实体,如类、const变量
- ifndef/define/endif的作用:当多个文件重复包含一个头文件时,提高编译效率,同时避免重复包含导致错误(类的重定义)。建议所有头文件中都要写上
- include库文件用<>,自己编写的头文件用" "
- 永远不要去include .cpp文件
- 尽量在.cpp文件中包含头文件,而非在头文件中。假设类A的一个成员是是一个指向类B的指针,在类A的头文件中使用了类 B的前置声明并编译成功,那么在A的实现中我们需要访问B的具体成员,因此需要包含头文件,那么我们应该在类A的实现部分(.cpp文件)包含类B的头文件而非声明部分(.h文件)
参考:
ifndef/define/endif的作用
https://www.jb51.net/article/100939.htm
头文件里写什么
https://www.cnblogs.com/fenghuan/p/4794514.html
在.h文件中包含头文件和在.cpp文件中包含头文件的区别
https://blog.csdn.net/xueruifan/article/details/50569639
#include和直接写class加类名的区别