带参宏定义的正确标准定义

#include <stdio.h>

#define ADD(x) x+x

//#define ADD(x) ((x)+(x))      //正确标准定义

int main()

{

int 1, 2, 3;

int sum ADD(m+n)*k;

//int sum m+n+m+n*k;      //实际替换

//int sum (ADD(m+n))*k;   //预期目的


printf("sum %d\n",sum);


return 0;

}

宏定义 只是一个简单的替换过程,不要自己想象中两外在整体外添加括号,好像提高优先级。

实参如果是表达式容易出问题  

#define S(r) r*r  

area=S(a+b);第一步换为area=r*r;第二步被换为area=a+b*a+b;  

正确的宏定义是#define S(r) ((r)*(r))

<script type="text/javascript" id="wumiiRelatedItems"> </script>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值