define的用法易错点

define宏代换

由于函数代换时容易产生错误,每次都要查看别人的博客,今天自己写写,以后找起来方便,也能更好的记忆。

(1)普通函数代换

#define max(a,b)  a>b?a:b

要注意的是用前式代换后式时,是替换后式的所有东西,包括符合,所以不能多次一举的加上‘;’。

(2)简单宏定义使用中出现的问题

#define c a+b

void main(){

    ...

   d=m*c*n;//因为宏代换只是简单的替代则d=m*a+b*n,而不是d=m*(a+b)*n

    ...

}

解决方法:要是得d=m*(a+b)*n  需定义:#define   c    (a+b)

(3)带参数的宏定义出现的问题

#define  square(x)   x*x
void main(){
    ...
    a=square(i+j)//a=i+j*i+j,而不是a=(i+j)*(i+j)
    ...
}
要使得a=(i+j)*(i+j),需定义   #define  square(x)   (x*x)

总之, 宏代换是先代换再运算。
优点:(1)方面程序修改
(2)优化速度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值