浅析宏和函数的区别与联系
来源:互联网 发布:家装软件 简单 编辑:程序博客网 时间:2024/06/06 02:52
1.一些思考
我们都知道宏非常频繁地用于执行一些简单的运算,比如求较大较小值,但为什么不用函数来完成呢?主要有以下几个原因:
NO.1 用于调用和从函数返回的代码很可能比实际执行这个小型计算工作的代码更大,所以用宏比使用函数在程序的规模和速度方面都更胜一筹
NO.2 函数的参数必须指定为一种特定的类型,只能在类型合适的表达式中使用,而宏是与类型无关的,而这既是宏最大的优点也是它最大的缺点
NO.3 程序的长度会受到宏长度的影响
NO.4 某些任务无法用宏来实现
NO.5 宏在进行表达式求值时由于永久性效果会产生副作用
2.不同之处
如下表所示:
(以下只是个人看法,有不足之处望各位大神及时批评指正)
属性
宏
函数
代码长度
每次使用都被插入到程序中,当宏本身长度较大时,会大大增加程序代码长度
源代码只出现一次,每次使用时调用同一份代码。
执行速度
更快
函数调用时存在额外开销
操作符优先级
参数求值时最好带上括号,否则由于临近操作符的优先级问题可能会产生不可预料的结果
参数只在函数调用时求值一次,并将结果传递给函数,表达式求值结果更易预测
参数求值
每次使用宏定义时都要重新求值,并且由于多次求值使得具有副作用的参数产生不可预料的结果
函数调用前只求值一次,多次使用并不会导致多种求值过程,参数的副作用也不会导致任何问题
参数类型
宏与类型无关,只要对参数的操作是合法的,它可以使用于任何参数类型
函数参数与类型严格有关,参数类型不同,函数也不同,即使他们执行的任务是相同的
命名约定
一般为大写
只要能与宏区分开即可
0 0
- 浅析宏和函数的区别与联系
- 函数与映射的区别和联系
- feof()函数和EOF结束符的区别与联系
- javascript中对象和函数的区别与联系
- 构造函数和get/set方法的区别与联系
- 可重入函数和线程安全的区别与联系
- 可重入函数和线程安全的区别与联系
- 【Linux】可重入函数和线程安全的区别与联系
- 可重入函数与线程安全的区别和联系
- 线程安全和可重入函数的联系与区别
- 线程安全和可重入函数的区别与联系
- Linux--线程安全与可重入函数的区别和联系
- &&和&的联系与区别
- 浅析数组与指针的联系与区别1
- 浅析数组与指针的联系与区别2
- 浅析nil、Nil、NULL和NSNull之间的区别与联系
- 浅析数据库(DB)、操作数据存储(ODS)和数据仓库(DW)的区别与联系
- 浅析TCP协议中URG和PSH的区别与联系
- mysql 主从日志文件mysql-bin文件清除方法
- IE7下z-index失效问题及解决方法
- 职业准备-1
- 安卓错误包
- 重新定义的网易视频云,将以何种姿态进军行业市场?
- 浅析宏和函数的区别与联系
- react-native问题
- 欧拉工程第20题 计算100!的各位之和
- 冒泡排序
- android经典文章收藏
- CSS 中 @import url()
- Elasticsearch.The.Definitive.Guide学习笔记 -- 1. You know, for search
- Qt Creator编译出错:‘cl’不是内部或外部命令
- Ubuntu16.04下安装sublime text3并配置anaconda插件