尝试将#define DEBUG_MODE添加到我的prefix.pch文件时编译器警告

时间:2011-09-20 09:05:55

标签: ios objective-c xcode c-preprocessor compiler-warnings

我正在试图弄清楚当我为发布版本构建它时如何从项目中剥离调试日志记录,并在此处找到了一个很好的线程:Is it true that one should not use NSLog() on production code?

在答案之下,另一位用户解释了如何启用/禁用DEBUG_MODE定义,所以我完全按照解释进入,即

在项目设置中,“预处理器宏”,调试行已经读取“debug = 1”,所以我将“debug_mode = 1”添加到字符串的末尾,以便它现在显示为“debug = 1 debugmode = 1“(中间有$ {inherited},无论是什么......)

但是,我现在得到一个编译器黄色警告说:

词法或预处理器问题,在我添加的prefix.pch文件中的行上重新定义了“DEBUG_MODE”宏:

#define DEBUG_MODE

#ifdef DEBUG_MODE
    #define DebugLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
#define DebugLog( s, ... ) 
#endif

如果有人能解释这个定义问题,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

只需将其更改为:

#ifdef DEBUG
    #define DebugLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
    #define DebugLog( s, ... ) 
#endif

删除#define DEBUG_MODE并从“预处理器宏”中删除debugmode=1 你很高兴。

您获取的错误是由于#define DEBUG_MODE已经在“预处理器宏”中定义的。