打印

C语言编程技巧---性能优化(宏定义)

[复制链接]
2002|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
奔腾2.0|  楼主 | 2011-2-25 10:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用宏定义:
很多人在使用宏定义的时候往往忽略了一些问题

在C语言中,宏是产生内嵌代码的唯一方法。对于嵌入式系统而言,为了能达到性能要求,宏是一种很好的代替函数的方法。

标准的宏定义:
写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个:

错误做法:

#define MIN(A,B) ( A <= B ? A : B )   (很多人都是这么定义的)

正确做法:

#define MIN(A,B) ((A)<= (B) ? (A) : (B) )

对于宏,我们需要知道三点:

(1)宏定义"像"函数;
(2)宏定义不是函数,因而需要括上所有"参数";
(3)宏定义可能产生副作用。

下面的代码:
least = MIN(*p++, b);

将被替换为:
( (*p++) <= (b) ?(*p++):(b) )

发生的事情无法预料。
因而不要给宏定义传入有副作用的"参数"

相关帖子

沙发
bit6019| | 2011-2-25 16:48 | 只看该作者
基础教育,很不错

使用特权

评论回复
板凳
小云001| | 2011-2-25 17:00 | 只看该作者
顶一下

使用特权

评论回复
地板
黑发尤物| | 2011-2-27 10:15 | 只看该作者
学习了

使用特权

评论回复
5
0中国芯0| | 2011-2-27 10:18 | 只看该作者
学习了,好东西

使用特权

评论回复
6
dianzirobot| | 2011-2-27 12:07 | 只看该作者
不错

使用特权

评论回复
7
即时生效| | 2011-2-27 12:26 | 只看该作者
其实写驱动就是个改动,这么个技巧一般用不到

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

493

帖子

1

粉丝