c++中强制建议用const替代宏常量,用内联函数替代宏函数,这是为何?
一.宏
首先我们来看下宏的优缺点:
优点:增强代码的复用性,提高性能
缺点:不方便调试(因为在预编译阶段就进行了替换)
可读性差,可维护性差,容易误用。
没有类型安全的检测。
例:
#define ADD( a, b ) a + b
void Test ()
{
int a = 2;
int b = 3;
int c = 4;
int ret = ADD( a, b );
cout<<"a + b:" <<ret<< endl;
ret = ADD (a, b) * c ;
cout<<"(a + b) * c:" <<ret<< endl;
}
二.内联和const
首先我们来看一下内联的定义:
以inline修饰的函数叫做内联函数,编译时C++编译器会调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。
优点:const和内联函数在进行编译时不仅进行替换,而且还会进行参数类型检测,提高了程序的安全性。内敛函数可以是普通函数,也可以是类的成员函数;函数式宏不能作为类的成员函数。