C语言高效编程的几招小技巧
引言:
编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。
第1招:以空间换时间
计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招——以空间换时间。
例如:字符串的赋值。
方法A,通常的办法:
#defineLEN32 charstring1[LEN]; memset(string1,0,LEN); strcpy(string1,“Thisisaexample!!”);
方法B:
constcharstring2[LEN]=“Thisisaexample!”; char*cp; cp=string2;
(使用的时候可以直接用指针来操作。)
从上面的例子可以看出,A和B的效率是不能比的。在同样的存储空间下,B直接使用指针就可以操作了,而A需要调用两个字符函数才能完成。B的缺点在于灵活性没有A好。在需要频繁更改一个字符串内容的时候,A具有更好的灵活性;如果采用方法B,则需要预存许多字符串,虽然占用了大量的内存,但是获得了程序执行的高效率。
如果系统的实时性要求很高,内存还有一些,那我推荐你使用该招数。
该招数的变招——使用宏函数而不是函数。举例如下:
方法C:
#definebwMCDR2_ADDRESS4 #definebsMCDR2_ADDRESS17 intBIT_MASK(int__bf) { return((1U<<(bw##__bf))-1)<<(bs##__bf); } voidSET_BITS(int__dst,int__bf,int__val) { __dst=((__dst)&~(BIT_MASK(__bf)))|/ (((__val)<<(bs##__bf))&(BIT_MASK(__bf)))) }
SET_BITS(MCDR2,MCDR2_ADDRESS,RegisterNumber);