c语言,宏定义,与函数的差别 我觉得宏定义和函数没什么差别啊, 是否可以用宏定义代替函数
例如;inta(b,c){...}#definea(b,c){(b)+(c)}两个是否一样...
例如;
int a(b,c)
{
...
}
#define a(b,c) {(b)+(c)}
两个是否一样 展开
int a(b,c)
{
...
}
#define a(b,c) {(b)+(c)}
两个是否一样 展开
4个回答
展开全部
#define a(x,y) x>y?x*y:x+y
和
int a(x,y)
{
return(x+y);
}
a(x+y,x*y)这个表达式对于以上两种定义的得到的结果是不一样的
而且,宏有宏的有点,函数有函数的优点
函数的优点就是占用存储空间少,缺点是每次调用函数都要调用中断程序,影响运行效率
宏的优点就是直接宏展开,每次调用都要展开,所以比较占存储空间,但是相应的就不用调用中断程序了,运行效率自然就高了
和
int a(x,y)
{
return(x+y);
}
a(x+y,x*y)这个表达式对于以上两种定义的得到的结果是不一样的
而且,宏有宏的有点,函数有函数的优点
函数的优点就是占用存储空间少,缺点是每次调用函数都要调用中断程序,影响运行效率
宏的优点就是直接宏展开,每次调用都要展开,所以比较占存储空间,但是相应的就不用调用中断程序了,运行效率自然就高了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先宏定义和函数是有差别的
宏定义是在编译之前处理的,不做语法检查。 这个很危险
另外我要说
#define a(b,c) {(b)+(c)}
表示bc之合,在结果上和函数确实一样
宏定义是在编译之前处理的,不做语法检查。 这个很危险
另外我要说
#define a(b,c) {(b)+(c)}
表示bc之合,在结果上和函数确实一样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
但是当函数复杂的情况下,你就没法代替了哦!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询