Правила предварительной обработки для модулей в Xcode

В выпуске CocoaLumberjack № 778, когда CocoaLumberjack связан как динамический каркас, линия #import "DDLogMacros.h" в CocoaLumberjack.h не имеет никаких эффектов. Следовательно, LOG_ASYNC_ENABLED(который определен в DDLogMacros.h) не определено.

Может кто-нибудь объяснить механизм о правилах предварительной обработки модулей Xcode? Похоже, что препроцессор не "препроцессирует" заголовки в модулях.

1 ответ

Мне не ясны правила предварительной обработки, но я добавляю#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 повлияет на макрос

Другие вопросы по тегам