为什么用 do{...}while(0)
程序员文章站
2022-03-16 10:35:08
...
@[TOC]为什么用 do{…}while(0)
在linux中有很多地方用到了do{...}while(0),看起来没什么意义,其实这个主要用在宏定义中。
例:
#define FREE_PTR(p) do{free(p); p=NULL;}while(0)
#define FREE_PTR(p) free(p); p=NULL;
if(NULL !=p)
FREE_PTR(p);
else
fun();
假如没有do{...}while(0)宏展开:
if(NULL !=p)
free(p); p=NULL;
else
fun();
显然有语法错误,那是不是有大括号{free(p); p=NULL;} 就可以了呢?
if(NULL !=p)
{free(p); p=NULL;};
else
fun();
很明显会多一个 ‘;’ 。
上一篇: Java复习小节1.1
下一篇: C语言 do-while语句