C语言,#define定义宏和函数的对比

一、代码长度

#define定义宏:每次用到 #define 时,对应的代码会插入的程序中,如果#define定义宏的代码比较长,就会导致插入后的程序长度大幅度增长;

函数:函数的代码只出现一次,每次使用这个函数就调动就行。

二、执行的速度

#define定义宏:速度更快,因为在预编译阶段就已经完成了替换;

函数:存在函数的额外调用和返回值的额外开销,速度相对于慢一些。

三、操作符优先级

#define定义宏:需要提前加好括号,否则可能有未知的错误,例如

                #define   DOUBLE(x)   x+x

                int a=5;

                printf("%d",10*DOUBLE(a));

                答案是:10*5+5=55.

函数:就不会出现类似#define定义宏的未知错误。

四、参数类型:

#define定义宏:可以参与任何类型的计算,例如:

                #define   MAX(X,Y)   ((X)>(Y)?(X):(Y))

                它可以参与任何类型的计算,如float、int、short等等

函数:它就不能参与任何类型的计算,是什么类型就只是参与什么类型,除非强制类型转换,因此凭借这点来说,#define在这仿麦呢方便很多

 五、调试

#define定义宏:不能调试,因为宏的替换发生在预编译阶段;

函数:可以调试,且能够逐语句调试,当代码出现bug时,能够分析出原因在哪里。

六、递归

#define定义宏:不能递归;

函数:可以递归。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值