宏和内联的比较

原创 2016年06月01日 17:07:04

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++学习笔记三——内联、宏和引用变量

1、常规函数和内联函数 2、内联和宏 3、引用变量

宏与内联

在C++里边推荐用内联函数来代替宏,这里面当然有它这样做的`理由。下面就来总结一下宏与内联各自的优缺点。 刚学C时,你写的第一个宏可能是这样的: #define MAX(a, b) ((a)>(b) ...

C++:为什么C++里建议用const/枚举/内联去替代宏?

什么是宏?计算机科学里的宏(Macro),是一种批量批处理的称谓。一般说来,宏是一种规则或模式,或称语法替换 ,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串...

Java动态绑定和内联

  • 2014-09-09 23:22
  • 958KB
  • 下载

c++ 内联成员函数

内联成员函数 类中的成员函数分为一般成员函数和内联成员函数。 把成员函数的代码放入类声明中,这种方式定义的类成员函数就叫内联成员函数(隐式定义)。程序使用内联成员函数的方式与一般的成员函数的调用方...

sql中内联和外联区别

HOOK钩子技术2 内联钩子Inline HOOK 通过DLL注入

dll注入很有意思,它最大的优势在于一旦这个dll被注入,就可以访问宿主程序整个内存空间。因此直接的操作dll是可以达到间接操作目标宿主程序的作用。这次继续使用CILHook类,不过这次是在目标程序内...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)