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.内联函数和编译器
编译器遇到一个内敛函数时,会将其放入字符表中。