宏观扩张生产'定义'有未定义的行为

时间:2018-04-09 21:16:01

标签: xcode9.3

升级到Xcode 9.3后,我们开始看到很多这样的警告:

  

宏观扩张生产'定义'有未定义的行为

像这样:

#if MIXPANEL_FLUSH_IMMEDIATELY // ==> Warning: Macro expansion producing ...
    [self flush];
#endif

而且:

#if !MIXPANEL_NO_AUTOMATIC_EVENTS_SUPPORT // ==> Warning: Macro expansion producing 
- (void)setValidationEnabled:(BOOL)validationEnabled {
    _validationEnabled = validationEnabled;
    ...
}
#endif

1 个答案:

答案 0 :(得分:5)

我猜宏不能嵌套在Xcode 9.3中。 我也有这些警告。 SCENEKIT_SDK_AVAILABLE is a nested Macro

宏定义如下,导致警告:

#if TARGET_OS_MAC
    #define SCENEKIT_SDK_AVAILABLE defined(POP_USE_SCENEKIT)
#elif TARGET_OS_IPHONE
    #define SCENEKIT_SDK_AVAILABLE defined(POP_USE_SCENEKIT)
#endif

我修好了这个:

#if defined(POP_USE_SCENEKIT)
# define USE_SCENEKIT 1
#else
# define USE_SCENEKIT 0
#endif
#if TARGET_OS_MAC
    #define SCENEKIT_SDK_AVAILABLE USE_SCENEKIT
#elif TARGET_OS_IPHONE
    #define SCENEKIT_SDK_AVAILABLE USE_SCENEKIT
#endif

我分离了宏" SCENEKIT_SDK_AVAILABLE"那样的,警告就没了。

你可以尝试我的方式。