【问题标题】:Define preprocessor macro in Xcode target在 Xcode 目标中定义预处理器宏
【发布时间】:2012-12-29 02:39:35
【问题描述】:

在我的代码中,我有一些条件:

#ifndef SOME_FLAG

// ...

#endif

在 Xcode 项目中,在 target->Build settings->preprocessor macros 下:

我向 Debug 和 Release 以及我之前设置的 AppStore 添加了一个预处理器宏: SOME_FLAG

(DEBUG 已经设置了DEBUG=1 DEBUG=1(作为一个条目?!!),我添加了另一个 SOME_FLAG 条目。

但这对我不起作用。 #ifndef #endif 块仍然存在!我做错了什么?

【问题讨论】:

  • 如果在所有配置设置中都使用该变量,为什么不在 .pch 文件中定义它?
  • 你的意思是你的#ifndef 块每次都会被编译??
  • 这不是按预期工作吗? #ifndef 表示“如果未定义”,但您为调试和发布版本定义了 SOME_FLAG,因此定义了 SOME_FLAG。
  • 为什么不在 .pch 中?是的,我也可以这样做。也许这是一个更好的主意。 #ifndef 每次都会编译,是的。我想保留代码以便我可以看到,但我真的不希望它执行。 (它是开源代码,所以我想看看我改变了什么)@zpasternack:如果它被定义,那么它不应该进入。但它确实。
  • 您找到解决方案了吗? (我也有同样的问题)

标签: ios xcode preprocessor


【解决方案1】:

您可以为您的 SOME_FLAG 添加价值 用于 Debug、App Store 和 Release as-

调试:SOME_FLAG = 0

发布:SOME_FLAG = 1

应用商店:SOME_FLAG = 2

#if SOME_FLAG == 0
NSString *appType = @"Debug Build" ;
#elif SOME_FLAG == 1
NSString *appType = @"Release Build" ;
#else
NSString *appType = @"App Store Build" ;
#endif

NSLog(@"My App Build is %@",appType); //My App Build is Release Build

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 2012-12-02
    • 2016-08-19
    • 1970-01-01
    • 2010-09-19
    相关资源
    最近更新 更多