【发布时间】:2015-03-09 16:41:35
【问题描述】:
我通常像 #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"];
}
非常感谢任何帮助:)
【问题讨论】:
-
if不是表达式,而是语句。您可以将if替换为三元条件表达式,但实际上您应该只定义一个函数。这是非常骇人听闻的。 -
你可能想要使用另一种类型而不是布尔值,以防你突然需要在三个不同的端点之间切换进行测试。
-
@OwenHartnett 有趣的一点,你有什么建议>
-
这也确实困扰着我——过去几周的每一篇 iOS 帖子似乎都被某人否决了,没有 cmets 说明原因。
-
#define BUILD_TYPE_1 1 - #define BUILD_TYPE_2 2 - #define REAL_BUILD_TYPE BUILD_TYPE_1 -(用回车替换连字符)
标签: ios c-preprocessor boolean-expression