xcode预处理器宏LLVM 4.2

时间:2013-01-31 13:48:19

标签: xcode preprocessor llvm

我正在尝试为DLOG设置DEBUG_MODE宏以仅使用调试模式,但它不起作用...

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

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

我很困惑,绿色突出部分代表什么?为什么有些部分看起来是空的,但是当点击值时会看到它?

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

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

enter image description here

编辑:

这变得非常邪恶!我在发布模式下将所有值设置为DEBUG = 0。并改变了

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

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

enter image description here

1 个答案:

答案 0 :(得分:1)

您的预处理器宏设置(调试为DEBUG=1且版本为DEBUG=0)将导致DLog()宏的第一个定义被使用,因为您使用了#ifdef(如果定义)提供不同的实现。这是因为如果您完全定义宏 无论您将其定义为

您需要做的是:

  • 从发布配置文件中删除DEBUG=0
  • 使用#if DEBUG代替#ifdef DEBUG