在 #define 值中使用 BOOLEAN 表达式

Using a BOOLEAN expression in a #define value

我通常像这样定义我的常量 #define kIamAconstant 我的 api 端点在这样的常量中。现在我的项目要求我有一个切换开关,可以在两个不同的端点之间切换以进行测试。我有几千行代码,而不是遍历所有代码并更改它,我想知道是否有一种方法可以在常量中使用布尔表达式。我已经尝试过这个(如下)并记录它但是当我尝试记录它时它说 Expected expression

#define kIsLiveEnvironment [IICore isLiveEnvironment]
#define kII_URL  if(kIsLiveEnvironment){@"FirstURL" }else{@"SecondURL"};

然后在我的视图控制器中我尝试记录这个:

 NSLog(@"IS Live environment %@ so use url %@",kIsLiveEnvironment,kII_URL);

IICore isLiveEnvironment如下:

+(void)isLiveEnvironment{
[[NSUserDefaults standardUserDefaults] boolForKey:@"isLive"];
}

非常感谢任何帮助:)

我猜问题是

#define kII_URL  if(kIsLiveEnvironment){@"FirstURL" }else{@"SecondURL"};

你试过了吗:

#define kII_URL  ((kIsLiveEnvironment) ? @"FirstURL" : @"SecondURL")

您的代码变为:

NSLog(@"IS Live environment %@ so use url %@",
    [IICore isLiveEnvironment],
    if([IICore isLiveEnvironment]){@"FirstURL" }else{@"SecondURL"};
);

这就是你出错的原因。

kII_URL更改为:

#define kII_URL ((kIsLiveEnvironment) ? @"FirstURL" : @"SecondURL")