头文件:
1、头文件自包含:自己编译,不依赖其他的.h文件进行编译,首选将模板和内联函数的定义放置在与其声明相同的文件中。这些构造的定义必须包含在使用它们的每个.c文件中,否则程序可能无法在某些构建配置中链接。
2、#define警卫:所有头文件应该有#define保护以防止多次包含。符号名称的格式应为<PROJECT>_<PATH>_<FILE>_H_。为了保证唯一性,它们应该基于项目源代码树中的完整路径。例如,项目foo中的文件foo/src/bar/baz.h应该具有以下警戒:
#ifndef FOO_BAR_BAZ_H_
#define FOO_BAR_BAZ_H_
#endif //FOO_BAR_BAZ_H_
3、前向声明:没有相关定义的类,函数或模板的声明。可以声明一个类而不定义它。(不完全类型只能以有限方式使用,不能定义该类型的对象,不完全类型只能用于定义指向该类型的指针或引用,或者用于声明 不是定义使用该类型作为形参类型或返回类型的函数)。
好处: 不必要的#include 会增加编译时间。