iOS 宏定义中有加减等算法的,有点坑!

iOS的宏定义需谨慎使用,否则埋了雷都不知道咋死的!
今天在优化项目的时候,改了一个宏定义,结果出现了匪夷所思的问题:
这是我一开始定义的一个全局的导航栏加状态栏高度的宏:
定义一个导航栏的宏,在定义一个状态栏的宏,然后再定义一个相加的宏


image.png

貌似没有问题,各个值都能获取到,没问题!
可是,在项目中有很多地方都会进行一些加减等算法,比如这个:

//#define Hong1 44//宏1
//#define Hong2 44 //宏2
//#define Hong3 Hong1 + Hong2 // 宏3

假如 宏Hong1是44, 宏Hong2是44;
那么 Hong3 就因该是 44+44,等于88。
int value = 100 - Hong3;
那么 100-88,应该就等于12!我也是那么想的!
然而,并不是,这个value的值仍然是100!
wf!见了鬼了不是!

其实宏替换,只是替换而已,这里的宏Hong3,只是替换Hong1 + Hong2 这两个宏加法,

所以把上面的那个算式,解刨一下就是这样:

value = 100 - Hong3 就等于 100-Hong1 + Hong2 == 100-44+44;
看到这大家焕然大悟!算式是有优先级的嘛,所以,我们在定义宏的时候如果其中有加减等算法的时候,一定要加上括号!

image.png

仅此将我踩的坑献给那些需要帮助的人

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容