do{...}while(0)功能及用法

发布时间 2023-06-09 16:57:44作者: sfa329

举例:

  不用do{...}while(0)

  #define DOSOMETHING()  fuc1(); fuc2()

  if(num > 0)
    DOSOMETHING();

       结果变成了:

  if(num > 0)
    fuc1();

  fuc2();

  调用错误。

  

  使用do{...}while(0)

  #define DOSOMETHING()  do{ fuc1(); fuc2();  }while(0)

  if(num > 0)
    DOSOMETHING();

       结果变成了:

  if(num > 0)
    do{ fuc1(); fuc2();  }while(0);

  结果正确。

 

  有人说加大括号可以解决,如下所示:

  #define DOSOMETHING()   {fuc1(); fuc2();}

  这也是错误的。

  举例:

  DOSOMETHING();

  结果变成了:

  {fuc1(); fuc2();};