微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

调试和预处理程序指令

如何解决调试和预处理程序指令

| 对于调试,我在应用程序中有很多对调试日志功能调用。当然,在生产版本中,需要跳过这些调试调用。而不是写:
#if DEVEL == 1
    Log::debug(...);
#endif
围绕对调试函数的所有调用,我决定在调试函数本身中编写以下内容
#if DEVEL != 1
    return;
#endif
编译器会避免无用的函数调用的开销吗?还是出于性能原因而使用(许多丑陋的)
#if #endif
构造会更好吗?     

解决方法

        不用担心优化器,您可以做一个简单的技巧:
#if DEVEL == 1
#define LOG_DEBUG(...) Log::Debug(__VA_ARGS__)  // variadic macro
#else
#define LOG_DEBUG
#endif
现在在所有地方都使用
LOG_DEBUG
使其简单。     ,        如果该函数可用于内联(例如,在标头中实现),则优化器将毫不费力地摆脱该函数调用,从而使您没有任何开销。     ,        你为什么不检查? 使用gcc时,只需用ѭ5comp进行编译,然后查看输出即可。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。