码迷,mamicode.com
首页 > 其他好文 > 详细

一种宏

时间:2014-12-16 17:02:24      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:style   os   sp   on   文件   bs   代码   ef   amp   

cc2541的代码中 

 

#define st(x)      do { x } while (__LINE__ == -1)

#define WD_KICK() st( WDCTL = (0xA0 | WDCTL & 0x0F); WDCTL = (0x50 | WDCTL & 0x0F); )

 

1、__LINE__ 是个宏,它代表当前代码在源文件的行号,它是大于0的,所以__LINE__ == -1 等同于0,化简为:
#define st(x) do { x } while (0)

2、do {} while (0)通常用于宏中, 为的是避免如下情况:

#define st(x) x

那么我们在调用 if (1) st(a = b; b = c;) 时会被解释成

if(1)
a = b;
b = c;

也就是说,do{x}while(0) 即给代码加上大括号,表示该宏内的代码是一体的。

一种宏

标签:style   os   sp   on   文件   bs   代码   ef   amp   

原文地址:http://www.cnblogs.com/zzmx/p/4167344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!