如何写#ifdef中的条件。用于分期。在目标c

时间:2011-08-26 13:10:42

标签: objective-c preprocessor-directive

我需要在此次调用中添加一个条件暂存 ..

在这种情况下如何做到这一点。

  #ifdef MYAPP_PRODUCTION
        buildMode = @"Production";
    #else

    #ifdef MYAPP_RELEASE
        buildMode = @"Release";
    #else MYAPP_DEBUG
       buildMode = @"Debug";
    #endif
    #endif

另一个是MyApp_Staging需要包含在这个if条件中如何做到这一点?

5 个答案:

答案 0 :(得分:63)

您可以执行以下操作来包含所有不同的选项,包括新的暂存模式,并使整个语句更清晰:

#ifdef MYAPP_PRODUCTION
    buildMode = @"Production";
#elif MYAPP_RELEASE
    buildMode = @"Release";
#elif MYAPP_DEBUG
    buildMode = @"Debug";
#elif MYAPP_STAGING
    buildMode = @"Staging";
#endif

答案 1 :(得分:57)

你的问题不是很清楚......如果你想在#ifdef中有多个条件,这是一个解决方案:

#if defined(MYAPP_RELEASE) && defined(MyApp_Staging)
    // ...
#else
    // ...
#endif

答案 2 :(得分:10)

在Swift和Xcode 7中,语法已经改变:

#if DEBUG || RELEASE
    let URL = "https://www.example.com/beta"
#elseif APPSTORE
    let URL = "https://www.example.com/prod"
#endif

答案 3 :(得分:0)

如果你想用2个构建目标来否定条件,请使用这样的方法。

#if !(TOWNTALK || EPISD)

答案 4 :(得分:0)

那呢?

#if defined(MYAPP_PRODUCTION)
  buildMode = @"Production";
#elif defined(MYAPP_RELEASE)
  buildMode = @"Release";
#elif defined(MYAPP_DEBUG)
  buildMode = @"Debug";
//#elif defined(MYAPP_STAGING)
#else
  buildMode = @"Staging";  
#endif