宏定义 do while(false)

  • Post author:
  • Post category:其他


#define _STL_VERIFY(cond, mesg)                                    \

do                                                            \

{                                                        \

if (cond)                                                \

{    /* contextually convertible to bool paranoia */ \

}                                                    \

else                                                    \

{                                                    \

_STL_REPORT_ERROR(mesg);                            \

}                                                    \

\

_Analysis_assume_(cond);                                \

}                                                        \

while (false)

宏定义为什么要用do while(false)括起来。

原因,防治出错

if(a) callA;

else _STL_VERIFY(cond,mesg) , 如果不用do{}while(false),宏被破坏。

另一个好处,do while里面可以break,减少if else。



版权声明:本文为vcpro126原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。