|
五、避免指针别名
1. 不要依赖编译器来消除包含存储器访问的公共子表达式,而应建立一个新的局部变量来保存这个表达式的值,这样可以保证只对这个表达式求一次值。
2. 避免使用局部变量的地址,否则对这个变量的访问效率会比较低。如果必须这样做,那么可以在使用之前先把它的值复制到另外一个局部变量。
六、结构体安排
1. 结构体元素要按照元素的大小来排列,以最小的元素放在开始,最大的元素安排在最后。
2. 避免使用很大的结构体,可以使用层次化的小结构体来代替。
3. 为了提高可移植性,人工对API的结构体增加填充位,这样结构体的安排将不会依赖于编译器。
4. 在API的结构体中要谨慎使用枚举(enum)类型。一个枚举类型的大小是编译器相关的。
七、位域
1. 应避免使用位域,而使用#define或者enum来定义屏蔽位。
2. 使用整型逻辑运算AND、OR、“异或”操作和屏蔽对位域进行测试、取反、和设置操作。这些操作编译效率高,还可以同时对多个位域进行测试、取反和设置。