【问题标题】:#define in .pch file is not working.pch 文件中的#define 不起作用
【发布时间】:2015-09-27 09:27:33
【问题描述】:

我试图通过使用这 3 个变量来定义构建的类型,但由于某种原因,它总是使用第一个。有什么想法吗?

// Pay attention: only ONE of these modes MUST be chosen.
//
//
#define DEVELOPMENT 0
#define PRODUCTION 1
#define STORE 0

我就是这样使用它的:

#ifdef DEVELOPMENT
    NSLog(@"Development version built.");
#elif STORE
    NSLog(@"Store version built.");
#else
    NSLog(@"Distribution version built.");
#endif

它总是输入第一个 ifdef..

【问题讨论】:

  • 因为它是“定义的”,不是吗?尝试评论 DEVELOPMENT 和 STORE 行,然后重试。
  • 在定义部分评论开发和存储?
  • 是的,但我建议您更改方法,因为您想比较宏的值。您当前的问题是您正在检查它们是否已“定义”,而不是在比较值。

标签: ios objective-c xcode pch


【解决方案1】:

我得到了你想要做的。你必须做的有点不同。你必须这样做:

#if DEVELOPMENT
    NSLog(@"Development version built.");
#elif STORE
    NSLog(@"Store version built.");
#else
    NSLog(@"Distribution version built.");
#endif

因为正如@EDUsta 所说,#ifdef 检查此宏是否已定义。如果是 - 那么它将被评估为true。在您的情况下,您必须检查价值,因此您必须使用#if

【讨论】:

  • 我们都会时不时遇到这种“简单”的问题,别担心:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
  • 2011-04-26
相关资源
最近更新 更多