今天看到LINUX内核代码里有不少这样的写法:
- C/C++ code
do { .... } while(0); //为什么要这么写?这种形式好在哪?
散分,唉,这个秋天就大三了,辞去了第一份工作,回去继续自己鼓捣……
------解决方案--------------------
执行一遍,跳出~~
防止宏配对错误~~~
------解决方案--------------------
举个例子看一下
- C/C++ code
#define FREE1(p) {if (p) free (p);} void main() { int *p=(int*)malloc(10); int i=1; if (i>0) FREE1(p) else printf("expression was false.n") ; }