宏和内联的比较

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和内联函数在进行编译时不仅进行替换,而且还会进行参数类型检测,提高了程序的安全性。内敛函数可以是普通函数,也可以是类的成员函数;函数式宏不能作为类的成员函数。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/db199410/article/details/51557408
文章标签:
个人分类: c++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭