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

例如;inta(b,c){...}#definea(b,c){(b)+(c)}两个是否一样... 例如;
int a(b,c)
{
...
}

#define a(b,c) {(b)+(c)}
两个是否一样
展开
 我来答
zero_fn
推荐于2018-04-12 · TA获得超过2258个赞
知道小有建树答主
回答量:1173
采纳率:80%
帮助的人:450万
展开全部
不同。
虽然功能近似,但函数会产生独立代码,每次调用执行的是同一个位置的代码,无论调用多少次。
宏定义是简单的文本替换,产生的代码是替换后程序产生的代码,简单说就是程序里每次使用宏替换后的地方都要产生类似的代码,而这些替换后产生的代码存在于程序的不同位置。

宏定义不检查参数类型,仅仅是简单的文本替换
yeyulong4
2011-10-29 · TA获得超过454个赞
知道小有建树答主
回答量:307
采纳率:0%
帮助的人:282万
展开全部
#define a(x,y) x>y?x*y:x+y

int a(x,y)
{
return(x+y);
}
a(x+y,x*y)这个表达式对于以上两种定义的得到的结果是不一样的
而且,宏有宏的有点,函数有函数的优点
函数的优点就是占用存储空间少,缺点是每次调用函数都要调用中断程序,影响运行效率
宏的优点就是直接宏展开,每次调用都要展开,所以比较占存储空间,但是相应的就不用调用中断程序了,运行效率自然就高了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自海印寺芳香袭人&#x00A0;的啄木鸟
2011-10-29 · TA获得超过2439个赞
知道小有建树答主
回答量:501
采纳率:0%
帮助的人:438万
展开全部
首先宏定义和函数是有差别的
宏定义是在编译之前处理的,不做语法检查。 这个很危险

另外我要说
#define a(b,c) {(b)+(c)}

表示bc之合,在结果上和函数确实一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leiyangbdwk
2011-10-29 · TA获得超过3295个赞
知道大有可为答主
回答量:4975
采纳率:12%
帮助的人:4363万
展开全部
但是当函数复杂的情况下,你就没法代替了哦!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式