00问答网
所有问题
急(C语言)比较带参的宏与带参的函数之间的区别
C语言简答题:比较带参的宏与带参的函数之间的区别
请各位回答的详细点,谢谢~
举报该问题
推荐答案 推荐于2016-03-29
区别:
1、宏会在编译器在对源代码进行编译的时候进行简单替换,不会进行任何逻辑检测,即简单代码复制而已。
2、宏进行定义时不会考虑参数的类型。
3、参数宏的使用会使具有同一作用的代码块在目标文件中存在多个副本,即会增长目标文件的大小。
4、参数宏的运行速度会比函数快,因为不需要参数压栈/出栈操作。
5、参数宏在定义时要多加小心,多加括号。
6、函数只在目标文件中存在一处,比较节省程序空间。
7、函数的调用会牵扯到参数的传递,压栈/出栈操作,速度相对较慢。
8、函数的参数存在传值和传地址(指针)的问题,参数宏不存在。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://00.wendadaohang.com/zd/TDnTBTrB.html
其他回答
第1个回答 2009-01-04
宏是在编译器在对源代码进行编译的时候进行宏替换,即把带参数的调用的那段代码替换成宏定义的那段代码,实质代码替换,因此带参的宏不能进行递归定义。而带参的函数则会编译到可执行文件中,是一种执行的逻辑,可以递归定义,即可以写递归函数。
所以本质区别就是:
1,一个是代码替换,一个是生成了运行的逻辑。
2,宏定义的不能递归定义,即不可以用宏定义一个递归函数。
第2个回答 2009-01-05
宏:代码替换,不检查数据类型,实质上由编译器展开,变量作用域在主程序,
函数:子程序,数据类型,编译成子程序,局部变量,(调用时局部变量入栈故可以递归)
第3个回答 推荐于2018-03-13
1.宏会在编译器在对源代码进行编译的时候进行简单替换,不会进行任何逻辑检测,即简单代码复制而已。
2.宏进行定义时不会考虑参数的类型。
3.参数宏的使用会使具有同一作用的代码块在目标文件中存在多个副本,即会增长目标文件的大小。
4.参数宏的运行速度会比函数快,因为不需要参数压栈/出栈操作。
5.参数宏在定义时要多加小心,多加括号。
6.函数只在目标文件中存在一处,比较节省程序空间。
7.函数的调用会牵扯到参数的传递,压栈/出栈操作,速度相对较慢。
8.函数的参数存在传值和传地址(指针)的问题,参数宏不存在。
本回答被提问者和网友采纳
相似回答
带参宏
定义
与函数的区别
是
答:
宏与函数的区别主要在于是否返回值
,一般函数都有返回值,宏是不可以的。宏和函数都不必须要求参数,参数都是可有可无的。
论述含参数
的宏与函数的
优缺点
答:
函数
是内置的,执行效率高,速度快。
宏
可以自己定制,灵活性较大,但执行速度相对慢。
C语言
中
带参
数
的宏
定义
与函数的区别(
试举例)
答:
函数就不同了,函数还需要分配栈空间,在执行函数时都要进行入栈和出栈操作,有的还需要分配堆空间
。宏所实现的功能有限,而且长代码不易读,但是对于逻辑简单、代码不长、经常使用的功能由宏来实现是个不错的选择
带参宏
定义
与函数的
问题
答:
而宏调用中的实参有具体的值。要用它们去代换形参,因此必须作类型说明。这是与函数中的情况不同的
。在函数中,形参和实参是两个不同的量,各有自己的作用域,调用时要把实参值赋予形参,进行“值传递”。而在带参宏中,只是符号代换,不存在值传递的问题。3. 在宏定义中的形参是标识符,而宏调用...
大家正在搜
带参的宏与函数的区别
带参数的宏和函数的区别
分别用函数和带参的宏找最大数
带参数的宏和函数的相同点
关于带参数的宏和函数
C语言宏函数怎么用
带参数的宏是什么
使用带参数的宏时
c语言的宏是怎么处理的
相关问题
请问C语言中带参数的宏和函数的比较
内联函数和带参数的宏的区别
C语言类函数宏和一般函数的区别
C语言题目:分别用函数和带参的宏,从三个数中找出最大值?
c语言带参宏替换的参数是形参还是实参
C语言中,宏的运用,和指针作为函数参数的运用,两者有何区别。
c语言宏定义函数如何调用(里面含参数可以当函数用吗)
如何定义一个带参数的宏