设计是权衡——实现多版本函数的代码中宏的位置

来源:互联网 发布:superjunior厂牌知乎 编辑:程序博客网 时间:2024/06/01 11:28

       比较下面两种代码:

代码一:

#ifdef MY_MACROvoid MyFunction(...) {    ......}#elsevoid MyFunction(...) {    ......}#endif

代码二:

void MyFunction(...) {#ifdef MY_MACRO    ......#else    ......#endif}

        前者无疑比后者清晰,它们分离成独立的函数,但事实上它们并不是没有关联的独立函数。它们接口相同,必须满足相同的语义。前者的写法斩断这种关联换来清晰的代码,其中的一个代价是修改其中一个函数的接口可能会忘记修改另一个。