摘要: 在看ldlm的代码过程中遇到了一个很奇怪的问题,有很多宏定义使用了do while(0)这种看起来好像没啥用的代码。然后我就问问师兄,才得知,这种用法很常见,自己又查了一下资料,原来在linux内核代码中经常用到这个东西!现在就将这个东西整理一下。 为什么在内核中碰到很多 #define ... do{...} while(0) ?有以下几点原因:1、空语句在编译的时候会出现警告,所以有必要用#define FOO do{ } while(0)2、给定一个基本块,可以在里面定义局部变量3、为了能够在条件语句中使用复杂的宏定义。例如下面这段代码: #define FOO(x) \ p... 阅读全文
posted @ 2014-01-04 10:02 沐阳 阅读(4004) 评论(1) 推荐(0) 编辑