有关宏定义的bug

Posted 葡萄成熟时卟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有关宏定义的bug相关的知识,希望对你有一定的参考价值。

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

这个宏有诸多缺点:
当调用比如max(3,2)*2时会出现不想要的结果.按理来说,我们想要得到的结果是:3*2=6,但是由于优先级的问题,得到的结果是:3>2*2?a:b即得到答案是4;
修改如下:
#define MAX(a,b) ((a)>(b)?(a):(b))

 

以上是关于有关宏定义的bug的主要内容,如果未能解决你的问题,请参考以下文章

高端技巧:怎样使用#define定义变量

C语言中,宏替换的替换规则

如何搜索有关数字宏的文档?

iOS宏定义介绍

利用C可变参数和宏定义来实现自己的日志系统

如何利用宏定义