在linux内核代码中,经常看到do...while(0)的宏,do...while(0)有很多作用,下面举出几个: 1、避免goto语句: 通常,如果一个函数开始要分配一些资源,然后如果在中途遇到错误则要退出函数,当然,退出前要释放资源,我们的代码 ...
在学习第一门编程语言时,就已经介绍了顺序分支 条件分支 循环分支。比如循环分支有for while do while语句。在随后的学校及工作中,如果手工循环一般使用for while,很少使用do while,感觉用处不大,但现在看来,do while大有用途。 . 帮助定义复杂的宏以避免错误 举例来说,假设你需要定义这样一个宏: 这个宏的本意是,当调用DOSOMETHING 时,函数foo 和f ...
2014-04-19 01:05 10 6089 推荐指数:
在linux内核代码中,经常看到do...while(0)的宏,do...while(0)有很多作用,下面举出几个: 1、避免goto语句: 通常,如果一个函数开始要分配一些资源,然后如果在中途遇到错误则要退出函数,当然,退出前要释放资源,我们的代码 ...
do-while循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。因此, do-while循环至少要执行一次循环语句。 简单来讲就是说while循环是先循环后判断 。 ...
int a; scanf_s("%d",&a); while(a>0) { //do something; } while循环先要判断条件是否成立,如果不成立,那么就直接越过循环,所以while循环执行的次数最少是0次。 do while 循环执行的次数 ...
python中没有do—while语法,但是python编程中遇到需要使用do—while来实现编程要怎么写呢? 下面是我从其它博主那里看到的方法,做个笔记,以防遗忘。 要实现的例子: 代码如下: 1、 a = 0 a = input() while ...
do{}while(0) 在linux中,经常会看到do{}while(0)这样的语句,许多人开始都会疑惑,认为do{}while(0)毫无意义,因为它只会执行一次,加不加do{}while(0)效果是一样的,其实do{}while(0) 的用法主要在于宏定义中。 这里用一个简单 ...
阅读Mitsuba的代码的时候,发现了一个有意思的地方: 定义了一个Log的宏函数,使用了do{...} while(0)的语法,这里的while中的条件是常量0,上面的代码永远只执行一遍。 感觉是多此一举,做法令人费解。上stack overflow查了下资料。说法 ...
这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢? 实际上,do{...}while(0)的作用远大于美化你的代码。查了些资料,总结起来这样写主要有以下几点好处: 1、辅助定义复杂的宏,避免引用的时候出错: 举例来说,假设你需要 ...
今天读代码时候,看到这样的代码。。 #define MG_SET_PTRPTR(_ptr, _v) \ do { \ if (_ptr) *(_ptr) = _v; \ } while (0) 1、对于带有if 语句的宏,无论是内核还是开源代码,都是用到了do while ...