1. 头文件

1.    #define 保护函数

(1)命名形式:<PROJECT>_<PATH>_<FILE>_H_性能

例如spa

#ifndef FOO_BAR_BAZ_H_
#define FOO_BAR_BAZ_H_
#endif //FOO_BAR_BAZ_H_

(2)做用:防止头文件被屡次包含。指针


2.    头文件的依赖关系code

(1)包含一个头文件,即引入头文件依赖关系。这个头文件改变时,代码都须要从新编译。递归

(2)使用前置声明来减小自定义头文件包含其余头文件的数量。资源

(3)使用前置声明的状况编译器

a.    声明数据成员 Foo* 或 Foo&;it

b.    声明静态数据成员 Foo;编译

c.    声明以 Foo 为参数、返回值的函数(参数 Foo 或者 const Foo& 有一个隐式单参数构造函数,则要引入类定义);


3.    内联函数

(1)利:可产生更高效的目标代码。尽可能内联类成员访问、修改函数,其余简短,对性能要求关键的函数。

(2)弊:过量使用会使性能受损。可能使代码量增长。

(3)总结

a.    少于10行;

b.    不含循环或开关指令;

c.    虚函数、递归函数一般不能被内联;


4.    内联头文件

(1)在头文件中定义内联函数,编译器才能将其代码复制到调用处。

(2)头文件通常不含实现代码,除非为了改善可读性或性能。

(3)-inl.h 文件定义复杂的内联函数,避免头文件臃肿,使实现和定义分开。

(4)-inl.h 文件另外一用途是定义函数模板,使函数模板定义可读性更好。


5.    函数参数次序

(1)参数次序:输入、输出。

(2)输入,数值或常引用。

(3)输出,非 const 指针。


6.    包含的命名和次序

(1)标准包含次序:C库、C++库、其余库、自定义头文件。

(2)头文件按其资源目录降序排列。

相关文章
相关标签/搜索