CocoaLumberjack issue #778中,当CocoaLumberjack作为动态框架链接时,#import "DDLogMacros.h"中的CocoaLumberjack.h行没有任何作用。因此,LOG_ASYNC_ENABLED(在DDLogMacros.h中定义)是未定义的。

有人可以解释有关Xcode模块预处理规则的机制吗?
看来预处理器不会“预处理”模块中的头文件。

最佳答案

我不清楚预处理规则,但是请添加#import <CocoaLumberJack/DDLog+LOGV.h>可以处理。

CocoaLumberjack-umbrella.h中,顺序如下:

#import "DDLog+LOGV.h"
#import "DDLog.h"
#import "DDLogMacros.h"

如果我这样更改订单就可以了:
#import "DDLogMacros.h"
#import "DDLog+LOGV.h"
#import "DDLog.h"

DDLog+LOGV.h中还定义LOG_ASYNC_ENABLED,我猜CocoaLumberjack-umbrella.h中的顺序将影响宏

关于ios - Xcode中模块的预处理规则,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40374236/

10-14 23:36