您的位置:首页 > 其它

宏和内联的比较

2016-06-01 17:07 148 查看
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和内联函数在进行编译时不仅进行替换,而且还会进行参数类型检测,提高了程序的安全性。内敛函数可以是普通函数,也可以是类的成员函数;函数式宏不能作为类的成员函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: