Thinking in C++【8】内联函数

1.宏代码的高效性

在C中,保持效率的一个方法是使用宏。宏的实现是用预处理器。预处理器直接用宏代码代替宏调用,所以就没有了参数压栈生成汇报代码的CALL返回参数执行汇编语言的RETURN调用。所有工作由预处理器完成。
缺点:

  • 在C/C++,宏调用隐藏了难以发现的错误;

    //eg1:
    #define F (x) (x+1)   //此处F与(x)有空格,预处理器因为F = (x) (x+1),而不是F(x) = (x+1)
    //eg2:
    #define FLOOR(x, b) x>=b?0:1
    //现在使用表达式作参数:
    if(FLOOR(a&0x0f >= 0x07?0:1)
    //由于&的优先级比>=低,会出现我们不想要的结果
    
  • 在C++中,预处理器不允许访问类的成员数据,即预处理器宏不能用作类的成员函数。


2. 类内部的内联函数

使用内联函数的目的是减少函数调用的开销,它会在调用函数的地方重复赋值代码。

3.内联函数和编译器

编译器遇到一个内敛函数时,会将其放入字符表中。

猜你喜欢

转载自blog.csdn.net/qq_43118572/article/details/112463752
今日推荐