这个宏是什么意思#define st(x) do { x } while (__LINE__ == -1)

zstack中进入退出临界区的宏定义是#defineHAL_ENTER_CRITICAL_SECTION(x)st(x=EA;HAL_DISABLE_INTERRUPTS... zstack中进入退出临界区的宏定义是
#define HAL_ENTER_CRITICAL_SECTION(x) st( x = EA; HAL_DISABLE_INTERRUPTS(); )
#define HAL_EXIT_CRITICAL_SECTION(x) st( EA = x; )
其中st(x)应作何解释?
#define st(x) do { x } while (__LINE__ == -1)
展开
 我来答
furious_tauren
2011-10-21 · TA获得超过4056个赞
知道大有可为答主
回答量:1913
采纳率:100%
帮助的人:772万
展开全部
#define st(x) do { x } while (__LINE__ == -1)

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

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

#define st(x) x

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

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

可见 if 只对a = b;起作用。

看明白了吗? 不明白的话继续问
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式