LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1081|回复: 4

请教do {} while 0的作用

[复制链接]
发表于 2005-12-21 12:55:11 | 显示全部楼层 |阅读模式
LINUX内核里经常会有这样的宏定义:
#define set_mb(var,value) do {var=value;mb();} while 0

请问为什么要套一层do {} while 0?
不套不行吗?
谢谢!
发表于 2005-12-21 16:42:03 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2005-12-22 17:16:08 | 显示全部楼层
for example;

if(flag)
    set_mb(var,value);
else
    flag=0;


你可以试一下,没有外层那么展开以后会发生什么事情;
回复 支持 反对

使用道具 举报

发表于 2005-12-24 12:03:04 | 显示全部楼层
用来定义由多条语句组成的宏
回复 支持 反对

使用道具 举报

发表于 2005-12-25 21:00:24 | 显示全部楼层
同意第四萜
找本讲c的书都能有
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表