美文网首页
iOS 宏定义中有加减等算法的,有点坑!

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

作者: 京哥 | 来源:发表于2017-10-27 15:08 被阅读0次

    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

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

    相关文章

      网友评论

          本文标题:iOS 宏定义中有加减等算法的,有点坑!

          本文链接:https://www.haomeiwen.com/subject/qcorpxtx.html