笔记: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