这篇介绍宏和函数的区别。
宏是C语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。其形式如下:
#define 宏名称 替换文本
宏
宏和函数的区别如下:
宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型;
宏的参数替换是不经计算而直接处理的,而函数调用是将实参的值传递给形参;
宏占用的是编译的时间,而函数占用的是执行时的时间。即宏是在编译之前进行的,先用宏体替换宏名,然后再编译;而函数是编译之后,在执行时,才调用的;
宏的参数是不占内存空间的,因为只是做字符串的替换,而函数调用时的参数传递则是具体变量之间的信息传递,形参作为函数的局部变量,是占用内存的;
函数的调用是需要付出一定的时空开销的,因为系统在调用函数时,要保留现场,然后转入被调用函数去执行,调用完,再返回主调函数,此时再恢复现场,这些操作在宏中是没有的。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
C语言
+关注
关注
180文章
7527浏览量
128258 -
函数
+关注
关注
3文章
3864浏览量
61304 -
代码
+关注
关注
30文章
4554浏览量
66726
发布评论请先 登录
相关推荐
AD7280AWBSTZ和AD7280ABSTZ之间到底有什么区别?
替代吗?在网上找到的两个芯片的相关数据都是一样的,AD7280AWBSTZ和AD7280ABSTZ之间到底有什么区别?
发表于 01-08 06:36
KEIL、uVision、MDK、KEIL C51、RealView它们到底有什么区别?
KEIL、uVision、MDK、KEIL C51、RealView它们到底有什么区别,又有什么联系?
发表于 07-01 09:08
C语言函数中的传值和传指针到底有什么区别
我们可能听过C语言中的传值和传指针,在其他语言中,也有传引用一说,那么他们到底有什么区别呢?如果你还不能准确地分辨,就该好好了解一下了。
评论