+ -
当前位置:首页 → 问答吧 → 请教大牛们一个关于宏定义中while(0) 这种格式是什么意思

请教大牛们一个关于宏定义中while(0) 这种格式是什么意思

时间:2010-07-26

来源:互联网

如这种形式: 
  1. #define ut_a(EXPR) do {                                         \
  2.         if (UT_DBG_FAIL(EXPR)) {                                \
  3.                 ut_dbg_assertion_failed(#EXPR,                  \
  4.                                 __FILE__, (ulint) __LINE__);    \
  5.                 UT_DBG_PANIC;                                   \
  6.         }                                                       \
  7.         UT_DBG_STOP;                                            \
  8. } while (0)
复制代码
为什么要这样定义呢?

作者: Coolriver   发布时间: 2010-07-26

这个比较月经, 每月出现一次

作者: zylthinking   发布时间: 2010-07-26

如果不想用goto,使用
do
{
    if ( true )
        break;
}while(0)

是个好办法。。。

作者: rain_fish   发布时间: 2010-07-26

封装

作者: 梅川内依酷   发布时间: 2010-07-26

为了让宏象函数一样       while(xxx){ut_a(zzz);} 或 while(xxx)ut_a(zzz);都能用

作者: zhangsuozhu   发布时间: 2010-07-26

谢谢各位大牛。

顺便在此BS一下那个用生殖系统思考问题的大牛。


QUOTE:
这个比较月经, 每月出现一次
zylthinking 发表于 2010-07-26 16:20

作者: Coolriver   发布时间: 2010-07-26



QUOTE:
谢谢各位大牛。

顺便在此BS一下那个用生殖系统思考问题的大牛。
Coolriver 发表于 2010-07-26 16:32




    你误会他啦,他的意思是说这样的问题每个月都会有几个人提问。网上管这个叫月经贴。呵呵

作者: zhangsuozhu   发布时间: 2010-07-26

靠。。。。。。。。无语了。。。。。。。。。。。

作者: zylthinking   发布时间: 2010-07-26

相关阅读 更多