这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » C语言编程技巧---性能优化(宏定义)

共10条 1/1 1 跳转至

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

专家
2011-01-28 09:54:25     打赏
使用宏定义:
很多人在使用宏定义的时候往往忽略了一些问题

在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) )

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



关键词: 语言     编程技巧     性能     优化     定义    

助工
2011-01-30 14:17:46     打赏
2楼
平时还真是忽略了宏定义,谢谢楼主提醒,顶上去,让更多的人看到,避免以后编程中犯同样的错误。

菜鸟
2011-02-09 17:01:59     打赏
3楼
不错的提醒,感谢分享

高工
2011-02-17 10:53:19     打赏
4楼

宏定义其实是C源程序中的“预处理命令”,不能直接对其编译,通常是在对程序编译之前进行“预处理”。如程序中用#define命令定义了一个常量Y,则预处理的时候将程序中所有的Y都替换成相应的常量,使用宏定义可以提高编程效率,但也要注意不能滥用,否则反而使程序执行速度变慢!


菜鸟
2011-03-23 18:26:18     打赏
5楼

貌似是这样子不错。。。。。。


菜鸟
2011-03-23 20:32:17     打赏
6楼
Thx for sharing

菜鸟
2011-04-01 12:38:52     打赏
7楼
宏定义可能会产生副作用,尽可能的多用括号来避免这个问题。

菜鸟
2011-04-21 22:32:56     打赏
8楼

很好的提醒


专家
2011-04-29 15:15:12     打赏
9楼

又是广告!!


菜鸟
2012-02-14 21:04:51     打赏
10楼
宏定义确实是个不错的方法,不过这么大的题目,LZ这点内容是不是太少了?

共10条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]