原文:linux do{} while(0)

do while 在linux中,经常会看到do while 这样的语句,许多人开始都会疑惑,认为do while 毫无意义,因为它只会执行一次,加不加do while 效果是一样的,其实do while 的用法主要在于宏定义中。 这里用一个简单的宏来演示: define SAFE FREE p do free p p NULL while 假设这里去掉do ... while ,即定义SAFE ...

2019-02-24 19:22 0 602 推荐指数:

查看详情

【转】linuxdo{...} while(0)的解释

  在看ldlm的代码过程中遇到了一个很奇怪的问题,有很多宏定义使用了do while(0)这种看起来好像没啥用的代码。然后我就问问师兄,才得知,这种用法很常见,自己又查了一下资料,原来在linux内核代码中经常用到这个东西!现在就将这个东西整理一下。 为什么在内核中碰到 ...

Sat Jan 04 18:02:00 CST 2014 1 3510
whiledo while区别

do-while循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。因此, do-while循环至少要执行一次循环语句。 简单来讲就是说while循环是先循环后判断 。 ...

Tue Oct 06 22:06:00 CST 2020 0 978
whiledo while循环的区别

int a; scanf_s("%d",&a); while(a>0) {   //do something; } while循环先要判断条件是否成立,如果不成立,那么就直接越过循环,所以while循环执行的次数最少是0次。 do while 循环执行的次数 ...

Sun Oct 14 00:54:00 CST 2018 0 761
python实现dowhile

python中没有dowhile语法,但是python编程中遇到需要使用dowhile来实现编程要怎么写呢? 下面是我从其它博主那里看到的方法,做个笔记,以防遗忘。 要实现的例子: 代码如下: 1、 a = 0 a = input() while ...

Fri Dec 25 18:06:00 CST 2020 0 428
do while(0)的作用

阅读Mitsuba的代码的时候,发现了一个有意思的地方: 定义了一个Log的宏函数,使用了do{...} while(0)的语法,这里的while中的条件是常量0,上面的代码永远只执行一遍。 感觉是多此一举,做法令人费解。上stack overflow查了下资料。说法 ...

Wed Jun 03 00:03:00 CST 2015 1 4206
使用do{ } while(0)的好处

这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢? 实际上,do{...}while(0)的作用远大于美化你的代码。查了些资料,总结起来这样写主要有以下几点好处: 1、辅助定义复杂的宏,避免引用的时候出错: 举例来说,假设你需要 ...

Thu Sep 26 23:16:00 CST 2019 0 1095
为什么要用do-while(0)?

今天读代码时候,看到这样的代码。。 #define MG_SET_PTRPTR(_ptr, _v) \ do { \ if (_ptr) *(_ptr) = _v; \ } while (0) 1、对于带有if 语句的宏,无论是内核还是开源代码,都是用到了do while ...

Thu May 17 01:14:00 CST 2018 0 1211
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM