美文网首页
iOS_宏定义相关

iOS_宏定义相关

作者: 怪客半 | 来源:发表于2018-04-20 17:52 被阅读7次

    2018.4.20

    • 定义涉及值的宏时最好加上括号。
    /**
     敲代码过程中发现定义宏不加括号,然后在另一个宏里调用这个宏的话,获得
     的结果和自己的预期不一样,所以做这个测试。
     */
    - (void)effectOfParenthesesOnMacros {
    #define macro1 1 > 2 ? 5 : 10    //10
    #define macro2 (1 > 2 ? 5 : 10)  //10
    
    /*宏里实现值的相加,之前的想法:macro1的值已经确定,这个值'10'分别和
     '1'与'2'相加,结果应该是'11'和'12',然而打印结果并非如此。
     推测macro3、macro4借用的是macro1的整体而不是值:
     macro3 = 1 + 1 > 2 ? 5 : 10
     macro4 = 2 + 1 > 2 ? 5 : 10
     */
        
    #define macro3 1 + macro1
    #define macro4 2 + macro1
    
    /*macro2加上括号之后符合预期结果*/
    #define macro5 1 + macro2
    #define macro6 2 + macro2
        
        NSLog(@"macro1:%d",macro1);
        NSLog(@"macro2:%d",macro2);
        NSLog(@"macro3:%d",macro3);
        NSLog(@"macro4:%d",macro4);
        NSLog(@"macro5:%d",macro5);
        NSLog(@"macro6:%d",macro6);
    }
    

    代码地址:https://github.com/ThinkerLqf/OCDemo_01/blob/master/OCDemo_01/PrintTest/PrintTestVC.m
    对应的effectOfParenthesesOnMacros方法。

    相关文章

      网友评论

          本文标题:iOS_宏定义相关

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