|
|
发表于 2006-2-13 23:22:32
|
显示全部楼层
Post by crspo
经常见到类似下面的代码:
- #define RECACHE \
- do { ip = &instack[indepth]; \
- ibp = ip->bufp; \
- limit = ip->buf + ip->length; \
- op->bufp = obp; \
- check_expand (op, limit - ibp); \
- beg_of_line = 0; \
- obp = op->bufp; } while (0)
复制代码
我想问的就是那个do{}while(0)究竟有什么用处
偶们一样都是新手,我理解这种痛苦!主要是因为在定义宏的原因吧,因为“;”是好多编辑器进行语法分析的关键字符,比如说我调用这个宏的话我写成“RECACHE;”编辑器认为一行结束,然后下一行就会按正确的格式书写。但如果没有do()while(0)的话,写成“RECACHE”才是符合程序语法的,但这样编辑器就搞错了,后面格式大乱! |
|