#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。