ChinaUnix.net
相关文章推荐:

while0

在驱动代码中经常看到如下形式的代码: do{ _ _ gpio_as_output(GPIO_LCD_VCC_EN_N) ; ... } while(0); 或者 #define ENTER() do{...}while(0) 我的问题是为什么要加个do{}while(0) 循环呢,直接写里面的函数调用或者宏定义不行(就是不用do{}while(0)同样执行一次)吗? 或者这样写有什么好处呢,求解释!!!

by hugo_don - 驱动开发 - 2011-09-07 18:50:05 阅读(2001) 回复(8)

相关讨论

as: #define __cpu_raise_softirq(cpu, nr) do { softirq_pending(cpu) |= 1UL << (nr); } while (0)

by valpa - 内核源码 - 2007-09-26 23:12:27 阅读(2509) 回复(9)

myfind用来查找路径下的文件是否存在并打印,“while test $# -gt 0"这里报错:/home/zack/bin/myfind: line 45: test: : integer expression expected,请问原因出在哪里 我把代码贴下来(跟其他行代码也没什么关系): #! /bin/bash - IFS="\040\t\n" OLDPATH="$PATH" PATH=/bin:/usr/bin export PATH error() { echo "$@" 1>&2 usage_and_exit 1 } usage() { echo "Usage: $PROGRAM [--all] [--?] [--help] [--versi...

by aboy85 - Linux环境编程 - 2014-07-26 18:44:23 阅读(2016) 回复(2)

while [ 0 ] do if ....break done 头一次见,是啥意思?

by chinaboywg - Shell - 2011-04-01 14:52:35 阅读(5659) 回复(19)

在读内核源码的时候,时常可以看到 do { } while (0)这样的语句, 不知道这样的语句有什么用处 ?

by weishigoname - 内核源码 - 2012-04-29 16:30:46 阅读(3163) 回复(12)

大家好,刚才看到有如下的宏定义,没有见过,向大家请教一下。那个(x...)是什么意思,怎么用这个宏,谢谢! #define dbg(x...) do{}while(0);

by linux_kejun - C/C++ - 2010-07-19 10:34:00 阅读(3094) 回复(6)

C 里面可以用do {} while (0) 来简单地模拟C++的异常处理,这个用法很多人都知道了。不过令我有些小小郁闷的是,这种写法在VC(即使是VC2008)总是有一个warning,说条件表达式为常量。 问题:有没有什么办法能够避免这个warning?(在不换编译器,不粗暴地disable这个warning的前提下) 我在网上看到一种解决方案,就是把 while(0) 用 while(__LINE__ == -1)代替,我试了一下,在有些编译器下可以逃掉warning,但是在VC2008下还...

by numdisp - C/C++ - 2010-04-20 13:14:35 阅读(4207) 回复(20)

do...while(0)的妙用 在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。 1. do...while(0)消除goto语句。 通常,如果在一个函数中开始要分配一些资源,然后在中途执行过程中如果遇到错误则退出函...

by sayou678 - Linux文档专区 - 2010-02-02 15:20:21 阅读(768) 回复(0)

#define MACRO_NAME(para) do{macro content}while(0) 的格式,总结了以下几个原因: 1,空的宏定义避免warning: #define foo() do{}while(0) 2,存在一个独立的block,可以用来进行变量定义,进行比较复杂的实现。 3,如果出现在判断语句过后的宏,这样可以保证作为一个整体来是实现: #define foo(x) \ action1(); \ action2(); 在以下情况下: if(NULL == pPointer) foo(); 就会出现action1和action2不会同时被执行的情况...

by ubuntuer - Linux文档专区 - 2009-12-31 17:59:45 阅读(793) 回复(0)

如题,把一个宏定义成do {} while(0); 到底有什么作用。 请教。

by yjh777 - 内核/嵌入技术 - 2005-12-20 10:52:43 阅读(22313) 回复(29)

如题,把一个宏定义成do {} while(0); 到底有什么作用。 请教。

by yjh777 - 内核源码 - 2005-12-20 10:52:43 阅读(7659) 回复(29)