1. 用宏f(x,y)实现x-y,正确的定义方式是

[复制链接]
查看11 | 回复3 | 2013-1-11 23:12:50 | 显示全部楼层 |阅读模式
D最保险,在任何情况下都适用。ABC在某些情况下会失效,举个例子:A#define f(x,y) x-y那么这样调用就有问题: 5 * f(3, 2)一展开就变成了 5* 3 - 2 =13,而调用者原意是 5*1=5B和C存在类似情况,只有D最好...
回复

使用道具 举报

千问 | 2013-1-11 23:12:50 | 显示全部楼层
正确的一看就是D,反正一般选括号加得最完整的一个就是了,其他的在宏扩展的时候都会出现各种各样的问题,现列举如下intvar=3,res,a=10,b=20;A、var*f(x,y)宏扩展之后变为var*x-y,而我们想要的是var*(x-y)B,C、同A一样...
回复

使用道具 举报

千问 | 2013-1-11 23:12:50 | 显示全部楼层
D宏是在预编译的时候完全替换。所以不能把x和y当成一个数来看待,要当成一个任意替换的东西,所以都要加括号。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行