【问题标题】:Can I #ifdef #imports?我可以#ifdef #imports 吗?
【发布时间】:2012-03-01 14:18:39
【问题描述】:

我可以在objective-c 中#ifdef #imports 吗?

例如:

#ifdef USE_A
#import "ClassA.h"
#endif

#ifdef USE_B
#import "ClassB.h"
#endif

【问题讨论】:

  • 是的,没用,但我想也许这里有人有解决方案。我对objective-c的东西不太熟悉。
  • 或者是否有其他解决方法?

标签: objective-c conditional-compilation


【解决方案1】:

是的,这个:

#ifdef USE_A
#import "ClassA.h"
#endif

有效。

【讨论】:

    【解决方案2】:

    我相信它的 #ifdef __OBJC__ 指令可以确保导入以下用于 Objective-C 的库。 if 的目的是除非必要,否则不要导入它们。此外,通过这种方式,代码仍然可以与可能想要使用该 C 文件中的功能的常规 C 代码兼容(至少在我看来是这样)。通过仅在定义 OBJC 时包含这些库,可以确保仅在为目标 c 而不是标准 C 编译时导入这些库。

    #ifdef __OBJC__
    #import <foundation/foundation.h>
    #import <uikit/uikit.h>
    #import <coredata/coredata.h>
    #endif
    

    【讨论】:

      【解决方案3】:

      是的,你可以在objective-c中使用#ifdef#imports

       #ifdef MACRO
      
       controlled text
      
       #endif /* MACRO */
      

      这个块被称为条件组。当且仅当定义了 MACRO 时,受控文本才会包含在预处理器的输出中。如果定义了 MACRO,我们说条件成功,如果没有定义则失败。如需更多信息,请查看GCC online docs

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-29
        • 2011-09-15
        • 2014-01-26
        • 2015-01-10
        • 2022-12-03
        • 2011-03-19
        • 1970-01-01
        相关资源
        最近更新 更多