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

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

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

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

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

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

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

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

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

含参数的宏与函数的区别

?         宏替换不占运行时间,只占编译时间;而函数调用则占运行时间(分配单元、保留现场、值传递、返回),所以每次执行都要载入所以执行起来比较慢一些。。 ?         定义宏的时候...
  • u011775691
  • u011775691
  • 2014-03-14 18:10:45
  • 798

论述含参数的宏与函数的优缺点。

论述含参数的宏与函数的优缺点   1.函数调用时,先求出实参表达式的值,然后带入形参。而使用带参的宏只是进行简单的字符替换。 2.函数调用是在程序运行时处理的,...
  • zhuimengzh
  • zhuimengzh
  • 2011-08-16 14:19:15
  • 1325

带参数的宏与函数的区别

1.函数调用时,先求出实参表达式的值,然后带入形参。而使用带参的宏只是进行简单的字符替换。 2.函数调用是在程序运行时处理的,分配临时的内存单元;而宏展开则是在编译时进行的,在展开时并不分配内存单元...
  • baoendemao
  • baoendemao
  • 2014-11-16 09:43:44
  • 1483

带参数的宏与函数的不同

#define  Pi 3.1415926 #define S(r) PI*r*r (1)函数调用时,先求出实参表达式的值,然后代入形参,而使用带参数的宏只是进行简单的字符替换。例如S(a+b),...
  • loonghun
  • loonghun
  • 2013-11-01 18:48:55
  • 742

比较带参宏与函数的异同

编译器是在程序的预编译阶段对宏进行处理的,主要是用预编译指令来替换源文件中的宏。 1.宏会在编译器在对源代码进行编译的时候进行简单替换,不会进行任何逻辑检测,即简单代码复制而已。2.宏进行定义时不会考...
  • piaojun_pj
  • piaojun_pj
  • 2010-10-11 09:41:00
  • 1689

C 宏定义 编译预处理 PPT

  • 2010年09月01日 15:46
  • 184KB
  • 下载

论述含参数的宏与函数的优缺点

论述含参数的宏与函数的优缺点1.函数调用时,先求出实参表达式的值,然后带入形参。而使用带参的宏只是进行简单的字符替换。2.函数调用是在程序运行时处理的,分配临时的内存单元;而宏展开则是在编译时进行的,...
  • liuxingbin
  • liuxingbin
  • 2010-02-05 11:23:00
  • 2343

宏函数和函数的区别及优缺点

区别 测试用例: 宏函数:#define MAX(a,b) ((a)>(b)?(a):(b)) 普通函数:MAX(a,b) {return a>b?a:b} 1.宏做的是简单的字符串的替换,而函数是参...
  • huaijiu123
  • huaijiu123
  • 2017-07-31 16:14:20
  • 677

带参数的宏和函数的区别

1.函数调用时,先求出实参表达式的值,然后带入形参。而使用带参的宏只是进行简单的字符替换。 2.函数调用是在程序运行时处理的,分配临时的内存单元;而宏展开则是在编译时进行的,在展开时并不分配...
  • iamdll
  • iamdll
  • 2011-04-20 15:16:00
  • 571
收藏助手
不良信息举报
您举报文章:论述带参数的宏与函数的区别
举报原因:
原因补充:

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