我可以#ifdef #imports吗?

时间:2012-02-09 04:10:44

标签: objective-c conditional-compilation

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

例如:

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

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

3 个答案:

答案 0 :(得分:5)

是的,这个:

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

有效。

答案 1 :(得分:1)

我相信它的#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

答案 2 :(得分:0)

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

 #ifdef MACRO

 controlled text

 #endif /* MACRO */

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