笔记:OSAL st 宏学习 do { x } while (__LINE__ == -1)

笔记:OSAL st 宏学习 do { x } while (LINE == -1)

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

这段的意思是让代码可以完全按你的预期执行。

不受大括号,分号的影响。

例子:

#define foo(x) bar(x); baz(x)

正常

foo (wolf);

宏展后为
bar (wolf); baz (wolf);

出错

下面这个就是有问题了。

if(!a)
    foo (wolf);

参考:
谈谈#define st(x) do { x } while (LINE == -1)
https://blog.csdn.net/oyyj42/article/details/26235613
do {...} while (0) 在宏定义中的作用
https://www.cnblogs.com/lanxuezaipiao/p/3535626.html

posted on 2019-09-07 14:51  建伟F4nniu  阅读(397)  评论(0编辑  收藏  举报

导航