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

宏和函数的区别:

1. 宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型. 

2. 宏的参数替换是不经计算而直接处理的,而函数调用是将实参的值传递给形参,既然说是值,自然是计算得来的.

 3. 宏在编译之前进行,即先用宏体替换宏名,然后再编译的,而函数显然是编译之后,在执行时,才调用的.因此,宏占用的是编译的时间,而函数占用的是执行时的时间.

 4. 宏的参数是不占内存空间的,因为只是做字符串的替换,而函数调用时的参数传递则是具体变量之间的信息传递,形参作为函数的局部变量,显然是占用内存的.

 5. 函数的调用是需要付出一定的时空开销的,因为系统在调用函数时,要保留现场,然后转入被调用函数去执行,调用完,再返回主调函数,此时再恢复现场,这些操作,显然在宏中是没有的. 

-------------------------------------------------以上转载自http://www.ccidnet.com/2010/0709/2110463.shtml------------------------------------

同时,我们添加了代码对此加以验证:

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

比较这两段代码,我们可以发现,对于宏函数来说,它在主函数中只是简单的字符替换,因此,在主函数中,调用宏函数后,计算的出的值为10*3+3

所以值为33,但是对于函数来说,它调用时是将值传入函数中进行计算,并将最后的值得到后再返回的,因此它的值为10*6为60。这个就是宏函数和函数在调用过程中的区别。