条款02 尽量以const ,enum,inline替换#define

来源:互联网 发布:oppo网络营销策划书 编辑:程序博客网 时间:2024/05/22 13:51


#define  的作用:

在C语言中我们经常看到

#define Max_num  100

这是个一个无参的宏定义,将Max_num的值设为100.这样做的好处是什么呢?将程序中经常出现的常量以宏定义的形式定义,

当我们想到修改该常量值为50时就不需满程序的去找该变量去修改其值,而只需修改宏定义

#define Max_num  50

显然这种无参的宏定义有助于修改程序。

#define Max( a, b )    f(  (a)  >  (b)  ?  (a)  :   (b)  )

我们或许也会看到这样的带参的宏定义,它看起来像个函数,这样的好处是什么呢?不会招致函数调用所带来的额外开销,从而提高程序的效率。

当然,我们必须特别注意这种形式出错特别高,最好在定义宏时为所有的实参都加上小括号,但就算你为所有的实参加上小括号,

在下面表达式中调用这种宏就会遭遇麻烦。

int a=5, int b=3;

Max( a ,b );//a被累加2次

Max( a, b+5 );//a被累加1次

显然这种情况是不可思议的!!

那我们会有什么好的解决办法呢?定义一个template inline函数

tempate < typename T>

inline void Max(const  T& a ,const T& b)

{

    f( a > b ? a :b);

}






0 0
原创粉丝点击