论述带参数的宏与函数的区别

转载 2007年10月10日 09:51:00

1函数调用时,先进性实参表达式的值,然后带入形参,而使用宏只是进行简单的字符替换.

2函数调用是在程序运行时处理的 ,分配临时的内存单元;而宏展开则是在编译时进行的,在展开时并不分配内存单元,不进行值得传递处理,也没有 "返回值"的概念.

3对函数中的实参与形参都要定义类型,二者的类型要求一致,如不一致,应进行类型转换;而宏不存在类型问题,宏名无类型,它的参数也无类型,只是一个符号代表,展开时带入指定的字符即可.宏定义时,字符串可以是任何类型的数据.

4调用函数只可得到一个返回值,而用宏可以设法得到几个结果.

5使用宏次数多时,宏展开后源程序变长,因为每展开一次都使程序增长,而函数调用不使程序变长.

6宏替换不占运行时间,只占编译时间;而函数调用则占运行时间(分配单元/保留现场/值传递/返回)

一般来说,用宏来代表间短的表达式比较适合.

C语言的宏之带参数宏

C语言的宏之带参数宏 引言C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,这种宏外形和作用与函数类似,即类函数宏。但是它的行为和函数调用完全不同。对带参数的宏,在...
  • libing403
  • libing403
  • 2017年06月10日 01:59
  • 423

C语言带参宏定义

C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,这点和函数有些类似。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。带参宏定义的一般形式为: #de...
  • swpu_yx32
  • swpu_yx32
  • 2016年10月19日 13:37
  • 1684

带参数的宏定义 #define

// // main.c // C语言学习 #include //求和函数 int sum(int v1, int v2){ return v1 + v2; } //宏定义 /*...
  • github_26672553
  • github_26672553
  • 2015年12月25日 20:02
  • 3010

宏定义有无参数宏定义和带参数宏定义两种

宏定义有无参数宏定义和带参数宏定义两种。    无参数的宏定义的一般形式为             # define 标识符 字符序列 其中# define之后的标识符称为宏定义名(简称宏名),...
  • swee111
  • swee111
  • 2017年06月15日 10:40
  • 2285

第十二周OJ——定义一个带参数的宏,使两个数交换

 问题描述:定义一个带参的宏(或者模板函数),带有三个参数, 第一个参数为类型,后两个参数的值互换,并写出程序,输入两个数 作为使用宏时的实参。输出已交换后的两个值。 文件名称:the_t...
  • qq_36203090
  • qq_36203090
  • 2016年11月21日 14:48
  • 1368

函数式宏定义与普通函数的区别

函数式宏定义与普通函数的区别尽管函数式宏定义和普通函数相比有很多缺点,但只要小心使用还是会显著提高代码的执行效率,毕竟省去了分配和释放栈帧、传参、传返回值等一系列工作,因此那些简短并且被频繁调用的函数...
  • isongbo
  • isongbo
  • 2015年07月04日 21:57
  • 1905

面试---内联函数和宏定义的区别

用内联函数取代宏:1.内联函数在运行时可调试,而宏定义不可以; 2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定 义则不会; 3.内联函数可以访问类的成员变量,宏定义则...
  • will130
  • will130
  • 2015年09月24日 15:58
  • 1228

C语言宏接收函数及其参数

C语言宏接收函数及其参数标签:c/c++#include #include #define call_optimized(function, arguments) {\ printf("\n...
  • hust_sheng
  • hust_sheng
  • 2016年04月08日 10:03
  • 1181

C++中宏定义和内联函数区别

1. 宏代码不是函数
  • cgl1079743846
  • cgl1079743846
  • 2014年05月27日 00:45
  • 2334

可变宏参数个数和可变函数参数个数

可变宏参数个数和可变函数参数个数
  • RHEL_admin
  • RHEL_admin
  • 2015年02月13日 19:31
  • 923
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:论述带参数的宏与函数的区别
举报原因:
原因补充:

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