宏和内联的比较

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

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

宏与内联(inline)的区别

宏与内联(inline)的区别 (1)、宏只做简单的字符串替换,函数是参数传递,所以必然有参数类型检查(支持各种类型,而不是只有字符串)。 (2)、宏不经计算而直接替换参数,函数调...

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

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

内联函数和宏的区别(内联和C++没有必然联系)

函数开销: 函数调用是有开销的,开销是在函数调用的时候,必须 把当前执行的代码顺序切换到被调用函数的地址, 地址跳换之前需要保存现场,被调函数执行完之后要恢复现场,并按照原来的顺序继续执行代码,所以函...

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

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

宏与内联

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

sql 外联、内联简单的例子

  • 2013年06月18日 10:54
  • 2KB
  • 下载

Java动态绑定和内联

  • 2014年09月09日 23:22
  • 958KB
  • 下载

inline 内联关键字

介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如 #define   TABLE_COMP(x)   ((x)>...

Chili 2.2 inline 内联样式增强版

  • 2013年11月08日 14:24
  • 74KB
  • 下载

sql中内联和外联区别

  • 2009年02月24日 20:55
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:宏和内联的比较
举报原因:
原因补充:

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