1

我正在尝试将 DLOG 的 DEBUG_MODE 宏设置为仅在调试模式下工作,但它不起作用......

到目前为止我尝试了什么:http: //developer.sinnerschrader-mobile.com/llvm-preprocessor-macros-xcode/275/

并将另一个标志命名为 DEBUG_MODE,播放带有或不带有 $(inherited) 值的组合。

我很困惑,绿色突出显示的部分代表什么?为什么有些部分是空的,但是当点击的值出现在其中时?

我应该如何配置我的宏,以便我可以真正访问它们:

#ifdef DEBUG
#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#   define DLog(...) do { } while (0)
#endif

在此处输入图像描述

编辑:

这真是变态了!我已在发布模式下将所有值设置为 DEBUG=0。并改变了

#if DEBUG
#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#   define DLog(...) do { } while (0)
#endif

仍然看到发布中的所有日志...

在此处输入图像描述

4

1 回答 1

1

假设您已使用(如果已定义)提供不同的实现,您的预处理器宏设置(调试存在DEBUG=1和发布存在DEBUG=0)将导致使用宏的第一个定义。这是因为如果您定义了宏,无论您将其定义为什么,都会定义宏。DLog()#ifdef

您需要做的是:

  • DEBUG=0从您的发布配置文件中删除。
  • 使用#if DEBUG而不是#ifdef DEBUG.
于 2013-01-31T13:51:55.650 回答