当我们定义一个宏时,do When(0)有什么用途?我正在阅读Linux内核,我发现许多宏都是这样的:#define INIT_LIST_HEAD(ptr) do { \ (ptr)->next = (ptr); (ptr)->prev = (ptr); \} while (0)为什么他们使用这个而不是简单地在{}中定义它?
3 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
if (doit) INIT_LIST_HEAD(x); else displayError(x);
明月笑刀无情
TA贡献1828条经验 获得超4个赞
它将扩展为“{(PTR)->Next.}”,因此,一个语句后面跟着第二个语句。如果语法是“if(表达式)语句”。否则不会与任何if相关联,因为您会编写“if(表达式)语句”(一个“{.}”和一个“语句”)。
- 3 回答
- 0 关注
- 282 浏览
添加回答
举报
0/150
提交
取消