宏定义表达式—完备括号问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CHENGZI_Y/article/details/51776455

*#define RECTANGLE_AREA(a, b) (a) (b);

则RECTANGLE_AREA(c + d, e + f)将扩展成: (c + d * e + f), d与e 先运算,造成错误**

        //FROM:华为C语言编程规范

这个解释有问题吧?

个人理解:
(1)上面的解释,应该是对应以下宏定义而言:
#define RECTANGLE_AREA(a, b) (a *b)

(2) (a) *(b) 问题在下面的解释:
若g/RECTANGLE_AREA(c+d, e+f) ,将扩展成g/(c+d) *(e+f) , g与(e+f) 本应该是除法运算,结果变成了乘法运算,造成错误。

欢迎拍砖指正,谢谢!

展开阅读全文

没有更多推荐了,返回首页