作者:宋宝华
摘要
在性能优化方面永远注意80-20准备,不要优化程序中开销不大的那80%,这是劳而无功的。宏定义是C语言中实现类似函数功能而又不具函数调用和返回开销的较好方法,但宏在本质上不是函数,因而要防止宏展开后出现不可预料的结果,对宏的定义和使用要慎而处之。
使用宏定义 在C语言中,宏是产生内嵌代码的唯一方法。对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法。 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个: 错误做法:
#define MIN(A,B) ( A 正确做法:
#define MIN(A,B) ((A) 对于宏,我们需要知道三点: (1)宏定义"像"函数; (2)宏定义不是函数,因而需要括上所有"参数"; (3)宏定义可能产生副作用。 下面的代码:
least = MIN(*p++, b); 将被替换为:
( (*p++) 发生的事情无法预料。 因而不要给宏定义传入有副作用的"参数"。 使用寄存器变量 当对一个变量频繁被读写时,需要反复访问内存,从而花费大量的存取时间。为此,C语言...
>> 阅读全文