美文网首页
条件编译宏

条件编译宏

作者: i诺离 | 来源:发表于2017-11-22 16:15 被阅读102次

    常用指令

    #undef 取消定义宏
    #if 如果条件为真,则编译下面的代码
    #elif 如果前面的#if不为真,则编译下面的代码
    #endif 结束一个#if...#elif条件编译块
    #ifdef 如果已经定义了某个宏,则编译下面的代码
    #ifndef 如果没有定义某个宏,则编译下面的代码
    #error 停止编译并显示错误信息
    
    #     将两侧当做字符串拼接
    ##   将两侧组成一个变量(它不可以是第一个或者最后一个子串。)
    

    实例:

    #define paster( n ) printf( "token" #n " = %d", token##n )
    
    应用:
    int token9 = 0;
    paster(9);
    输出:
    token9 = 0
    

    可以通过设置Compiler Flags来定义宏,然后就可以在代码中使用这些宏,来进行条件编译的操作。

    有三种方式设置:

    OTHER_CFLAGS (Other C Flags)
    // 在Target>Build Setting>Custom Compiler Flags>Other C Flags
    
    GCC_PREPROCESSOR_DEFINITIONS (Preprocessor Macros)
    // 在Target>Build Setting> Preprocessing > Preprocessor Macros
    
    INFOPLIST_PREPROCESSOR_DEFINITIONS (Info.plist Preprocessor Definitions)
    // 在Target>Build Setting> Packaging > Info.plist Preprocessor Definitions
    
    注意:在other c flags 设置 需要使用-D的格式
    -D[你要设置的宏名称] 
    // 没有中括号  发现#if  或者  #ifdef 都可以执行
    
    在 Preprocessor Macros 设置定义宏需要转义,例如
    // 定义替换为NSString类型
    MY_MACRO=@\"Hello!!\"
    // 这样定义替换后的类型是:NSNumber
    MY_NUMBER=@"123"
    

    相关文章

      网友评论

          本文标题:条件编译宏

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