【问题标题】:xcode preprocessor macros LLVM 4.2xcode 预处理器宏 LLVM 4.2
【发布时间】:2013-01-31 13:48:19
【问题描述】:

我正在尝试将 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

仍在发布中查看所有日志...

【问题讨论】:

    标签: xcode preprocessor llvm


    【解决方案1】:

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

    您需要做的是:

    • 从您的发布配置文件中删除 DEBUG=0。
    • 使用#if DEBUG 而不是#ifdef DEBUG。

    【讨论】:

    • @tugce 你的代码现在看起来不错;我本来希望这样做的。你是说DLog() 在发布模式下产生输出?
    • 是的,不幸的是在发布模式下 DLog() 仍然产生输出
    • @tugce 必须确保您已经清理并重建了整个项目?
    • 哇,这完全是我对发布和调试模式的错误假设。创建了新的发布计划并像魅力一样工作。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 2016-08-27
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多