boost 1.55 提供了一个使用 C++ 流插入运算符(也称为左移运算符)的日志记录 API。
虽然语法很方便,但我想不出从可执行文件中丢弃调试文本文字的方法。
例如,使用 MFC,TRACE 宏在发布配置中最终成为一个空行。
使用 TRACE(或任何此类宏函数):
TRACE("This text literal shall only be found in debug configuration");
使用 boost API:
LOG_DEBUG << "This text literal shall only be found in debug configuration";
我测试了(使用 Visual Studio 2010,启用了编译器完全优化 (/Ox))How to remove log debugging statements from a program线程建议,但文字最终出现在发布的可执行文件中(这是有道理的,据我预测结果)。
最佳答案
这对我有用,但它需要重写日志语句:
#ifdef _DEBUG
#define LOG(arg) LOG_DEBUG << arg
#else
#define LOG(arg)
#endif
线
LOG("This text literal shall only be found in debug configuration");
对于非调试构建,将被预处理为空。流媒体仍然有效:
LOG("Answer = " << 42);
关于c++ - 使用 boost::log API 时,有没有办法从发布二进制文件中删除文本文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23922230/