关于宏的一点东西
在平时看C/C++代码的时候,经常会看到宏的定义,而有一些宏是这么写的:
多出来的do{}while(0)看似多余的,我之前 也是觉得很多余,但是经过在网上一搜,才知道原来这是为了消除有时候由于宏而出现的歧义而作的。
比如:
而使用JUSTFORTEST宏的语句是这样:
这样的话把宏给替换过来就是:
这样的话else就不是属于if(1==1)而是变成if(1)的分支了。。
所以这里的do{}while(0)则可以避免这种情况的发生。仔细想想用宏挺可怕的,因为很容易误导程序员且错误并不容易找,不过用宏还是可以很轻松完成一些工作的。如何看待宏就因人而异了