【问题标题】:How to use if else in macro(define)?如何在宏(定义)中使用 if else?
【发布时间】:2017-07-04 08:02:54
【问题描述】:

我应该将 Live URL 和 Dev URL 分开。 所以,我写了这段代码

#define _APP_MODE @"real"

#if APP_MODE == dev
#define _BASE_URL @"http://devmall.aaa.com/m/app/"
#define _URL_FROM_SAFARI @"http://devmall.safari.com"
#else
#define _BASE_URL @"http://m.aaa.com/m/app/"
#define _URL_FROM_SAFARI @"http://m.safari.com"

但它总是返回 dev_url

确保 URL 由 APP_MODE 分隔的最佳方法是什么?

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    字符串在 objC 预处理器 AFAIK 中不起作用

    ...另见how to compare string in C conditional preprocessor-directives


    我会做(并且很常见)是使用整数

    #import <Foundation/Foundation.h>
    
    #define DEV 0
    #define REAL 1
    
    #define APP_MODE REAL
    
    #if APP_MODE == DEV
    #define BASE_URL @"http://devmall.aaa.com/m/app/"
    #define URL_FROM_SAFARI @"http://devmall.safari.com"
    #else
    #define BASE_URL @"http://m.aaa.com/m/app/"
    #define URL_FROM_SAFARI @"http://m.safari.com"
    #endif
    
    int main(int argc, char *argv[]) {
        @autoreleasepool {
            NSLog(BASE_URL);
        }
    }
    

    注意:去掉所有奇怪的下划线 :)) [如果可以的话]

    【讨论】:

    • 你不能 - 这是一个编译器检查
    猜你喜欢
    • 1970-01-01
    • 2021-12-06
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    相关资源
    最近更新 更多