매크로 정의 에서 do{}while(0)사용 하기

1471 단어 linux
     do...while(0)
      C++   ,         ,     ,     MFC,  MFC afx.h    ,              do...while(0) do...while(false),    :
#define AFXASSUME(cond)       do { bool __afx_condVal=!!(cond); ASSERT(__afx_condVal); __analysis_assume(__afx_condVal); } while(0) 
           ,            ,         do...while(0)      ? 
   !
        ,             :
#define SAFE_DELETE(p) do{ delete p; p = NULL} while(0)
      do...while(0),
#define SAFE_DELETE(p) delete p; p = NULL;
if(NULL != p) SAFE_DELETE(p)
else   ...do sth...
      ,
1)   if        ,else       if,    
2)     else, SAFE_DELETE         if      ,     。
     ,         ,             do...while,      {}       
#define SAFE_DELETE(p) { delete p; p = NULL;}
  ,              ,      C++     ,                    ,    ,    :
if(NULL != p) SAFE_DELETE(p);
else   ...do sth...
 else          (    ),    do...while(0)       。
     ,                 {},          ,     do...while , :
if(...) 
{
}
else
{
}
  ,      ,         ,           library       ,     library   ,               ,   ,                 ,      ,     。 

좋은 웹페이지 즐겨찾기