【电子资讯】使用带参数的宏定义说明
对于带参数的宏定义有以下问题需要说明:
①带参数的宏定义中,宏名和形参表之间不能有空格出现。例如,把
#define F(y)y*y
写为:
#define F(y)y*y
将被认为是无参数的宏定义,宏名F代表字符串(y)y*y。
②在宏定义中,字符串内的形参最好用括号括起来以避免出错。在上例的宏定义中(y)*(y)表达式的y是用括号括起来。
③带参数的宏与函数的区别:函数调用时,先求出表达式的值,然后代入形参。而使用带参数的宏只是进行简单的字符替换,在宏展开时并不求解表达式的值。函数调用时在程序运行时处理的,而宏展开则是在编译时进行,宏定义没有“返回值”的概念。使用宏定义时,宏展开后源程序将变长,而函数调用不会使源程序变化。调用函数只可得到一个返回值,而用宏却可以设法得到几个结果。
电子街推荐阅读