尽量使用内联函数替代宏函数

前提是你 提交于 2019-12-01 07:26:01

  宏函数看起来像函数,却不会带来函数调用的额外开销,但是宏函数也有其弊端,例如:

  #define  CALL_MAX_FUN(a, b)  fun((a) > (b) ? (a) : (b))

  int a = 5, b=0;

  CALL_MAX_FUN(++a, b);              //a自增2次

  CALL_MAX_FUN(++a, b+10);        //a自增1次

  同样的调用,竟然会因为参数的不同,导致a的结果值不同。

  

  所以尽量使用内联函数来替代宏,内联函数由于其内链接的属性,可以在头文件中定义,并且被多个编译单元引用。另外内联函数也不会带来函数调用的额外开销。另外内联函数是真正的函数,它遵守作用域和访问规则。

  template<typename T>

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

  {

    f( a > b ? a : b);

  }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!