如何在宏(定义)中使用if else?

时间:2017-07-04 08:02:55

标签: ios objective-c

我应该将Live和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分隔的最佳方法是什么?

1 个答案:

答案 0 :(得分: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);
    }
}

注意:松开所有奇怪的下划线:))[如果可以]