【C++填坑】到底把#include "xx.h"写在哪里?
其实最简单,最粗暴的方式就是将#include "xx.h"写到.h文件中。
例如:
我想要在A文件中引入B文件提供的方法函数或对象。那么我就将#include "B.h"写在 A.h 里。毕竟就算你 A.cpp 文件要用B里的方法,你必然会先将 #include "A.h" 放在 A.cpp 里。
那么此时在预编译阶段,进行头文件展开,就会将代码引入。
上述方法并不推荐使用,例如如果头文件相互引用,就是 A.h 要进入 B.h ,B.h 要进入 A.h 。这样展开的时候就会报错了。
所以一般我们在写的时候:
- 当 .h 文件中的声明用到了 T t;(指针类型)那么我们只需要在.h前方加入 class T; 声明一下即可。* 没有必要 #include "T.h"。
- 当 .h 中用到了 T t;(非指针类型)此时可以在 .h 中 #include "T.h"。
- 至于其他的方法函数内需要用到的头文件,当然都是在cpp文件中声明了。
至于为什么这样分开,原因在于,指针类型的大小就是固定的4字节,但非指针类型的大小确是不固定的,所以需要提前引入。
另一个原因在与C++接口设计,你写的.h文件作为一个模块给别人用的时候,并不需要把没有用的其他.h文件提供给别人。这样也优化了编译过程。