[ol][*]#define FREEP(p) do { if (p) free(p); } while (0)[/ol][ol][*]#define DELETEP(p) do { if (p) delete(p); } while (0)[/ol]上面的两个宏应定义如何理解?while 循环的条件假,在do { } while (循环条件),能保证循环执行一次,但为什么要这样写代码呢?
摇曳的蔷薇
浏览 161回答 2
2回答
暮色呼如
你的疑问应该是这句吧#define FREEP(p) do { if (p) free(p); } 为什么定义个宏还需要用到个do-while。这个看着好像有点多余,其实这只是一种写法而已,不需要太纠结,它没有特殊的意义,具体的意义是要体现在程序的上下文中的.你也可以不加do-while的直接写个单纯语句而已,主要你的宏在展开时候还保留你原先定于该宏的含义就可以了