【第22期】观点:IT 行业加班,到底有没有价值?

宏和内联的比较

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

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

相关文章推荐

块级元素、内联元素、内联块级元素的比较

块级元素、内联元素、内联块级元素 1、级元素水平拉伸,垂直包裹。可以设置 width, height属性。块级元素会独占一行,其宽度自动填满其父元素宽度,块级元素即使设置了宽度,仍然是独占一行的。 内...

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

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

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

宏和内联inline函数

宏是由由预处理器preprocessor处理的. inline函数是由编译器compiler处理的. 宏      没有类型检测 直接替换           预处理器不能访问类...

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

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

宏函数与内联函数比较

第一部分:宏 为什么要使用宏呢? 因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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