linux sources里面有好些代码是写成do{...}while(0)这样的形式的。这样写有什么用意呢?和直接写{}里面的语句相比有什么区别呢?
回复(11) 2003-05-06 11:10 来自版块 - LINUX&UNIX核心开发
表情
archim所以我现在养成了习惯 不管if else后面是一条还是N条语句 都用{}括起来(2003-05-27 09:08)
zhanghuhu哦 原来 if (a) { if (...)dosomething; }; else somecode; 是错误的 这样的代码会有语法错误,还比较容易查出,如果整段代码放到一个不到else的if语句中,又没有用花括弧括起来,那错误就更隐蔽了。 ...(2003-05-26 20:20)
fly_fly哦 原来 if (a) { if (...)dosomething; }; else somecode; 是错误的 (2003-05-26 18:46)
Tomgin大家有没有见到不在 宏里的 do{}while(0) (2003-05-20 13:06)
linzhuhometown说的对,为了避免宏扩展时“;”带来的二义性,所以使用do { } while(0) 结构(2003-05-17 18:16)
brucezh#define MACRO if(...) dosomething ... if (a) MACRO; else somecode; 展开: if (a) if (...)dosomething; else somecode; ...(2003-05-16 14:39)
longge一般在宏里使用, 可以避免在宏扩展的时候出现二义性 这位老兄说的对,一般在定义复杂宏时用的!(2003-05-08 14:06)
Tomgin有许多分支结构的程序用 if else 写很不清晰, do while 加 break 能很好实现不满足条件时不执行后面的代码 应该是实现多分支结构的技巧吧(2003-05-08 13:05)
archim原来如此(2003-05-06 15:19)
hometown一般在宏里使用, 可以避免在宏扩展的时候出现二义性(2003-05-06 14:49)

返回顶部