头文件包含规则
最近在windows上开发程序,编译的时候总是遇到一大堆不知所云的链接错误,细究发现是包含头文件不规范引起的。以前只是代码写到哪就编译到哪,从来没有关注未定义的变量和类是如何被包含进来的,总是等着编译器帮忙提示错误,然后加上include语句,现在看这种做法非常不合理,很容易造成变量重复定义的问题。现在将网络上搜集的一些规则总结如下:
1.尽可能少地包含头文件,尽量用前置声明。如果使用的仅仅是一个类的指针而不涉及类的成员变量和成员函数,那么使用前置声明就可以了。
2.尽量在CPP文件中包含头文件。假设A类的一个成员是指向B类的一个指针,在类A的头文件中使用B的前置声明并且编译成功,在类A的实现中需要访问B的成员函数,那么需要包含关于B的头文件,此时我们应该在类A的实现文件中include,不要在头文件中include。