C/C++ 中的宏是个让人又爱又恨的家伙(感觉这句话好俗啊),在带给我们很强大的 Power 的同时,却也需要我们绝对的细心,而这也是在宏定义中诸多惯用法的由来。
当我们要把一组语句定义成一个宏,并希望像用一条语句那样来使用它的时候,我们就可以这样做:
|
|
之后,我们只要在调用方写 MACROX;
就可以了。之所以不能简单的用花括号把这一组语句括起来,是为了防止扰乱 if
语句中的 else
子句的匹配问题。嗯,确实是个不错的主意啊,直到我遇到了一个,嗯,也许只有我才会遇到的问题。那就是,我在这组语句中,不能用 break
和 continue
。是不是觉得这需求蛮诡异的,呵呵,连我自己都觉得,不过这是我在重构一些相似的循环体时遇到的。但总之,我是找到了另外的一种包装方法啦,自己想想也没什么问题,大概,就像下面这样:
|
|
嗯,看起来是不是要比大家都知道的那个诡异很多啊。不管了,以后发现问题了再说吧。