c语言,宏定义,与函数的差别 我觉得宏定义和函数没什么差别啊, 是否可以用宏定义代替函数

例如;int a(b,c){ ...}#define a(b,c) {(b)+(c)}两个是否一样
2025-04-08 06:47:40
推荐回答(2个)
回答1:

不同。
虽然功能近似,但函数会产生独立代码,每次调用执行的是同一个位置的代码,无论调用多少次。
宏定义是简单的文本替换,产生的代码是替换后程序产生的代码,简单说就是程序里每次使用宏替换后的地方都要产生类似的代码,而这些替换后产生的代码存在于程序的不同位置。

宏定义不检查参数类型,仅仅是简单的文本替换

回答2:

#define a(x,y) x>y?x*y:x+y

int a(x,y)
{
return(x+y);
}
a(x+y,x*y)这个表达式对于以上两种定义的得到的结果是不一样的
而且,宏有宏的有点,函数有函数的优点
函数的优点就是占用存储空间少,缺点是每次调用函数都要调用中断程序,影响运行效率
宏的优点就是直接宏展开,每次调用都要展开,所以比较占存储空间,但是相应的就不用调用中断程序了,运行效率自然就高了