0

假设我们有一个包含 20 个模块的 30 K 行代码数据库:即每个模块的 *.cpp 和 *.h 文件。在开发过程中,源代码被修饰为通过 cerr 查找的局部变量。有时它具有与 gdb 相同的优点,有时则没有。想要保持 cerr 流干净 /silent ,并且能够只从他希望的模块中获取对 cerr 的写入。我如何能 :

1)区分对 cerr 的写入,它们包含有关它们来自哪个模块的信息?2)为构建二进制文件添加命令行选项,这将指定允许哪些模块写入cerr(我想看到的那些)。

4

1 回答 1

1

编辑:事实上,最好的方法是使用日志框架(根据 Joachim Pileborg 的评论)。只有当您绝对必须坚持您已经拥有的代码但想要整理它时,以下内容才真正适用。

最好的方法是使用预处理器,使用#ifdef指令来选择要构建的代码。

例如

#ifdef CERR_DEBUG_BUILD_MODULE_1
cout << __FILE__ << ":" << __LINE__ << "\tCERR DEBUG OUTPUT" << endl;
#endif

该语句可能会更好地包含在一个小宏中:

#ifdef CERR_DEBUG_BUILD_MODULE_1
#define LOG( x ) cerrLogPrint( x, __FILE__, __LINE__ )
#else
#define LOG( x )
#endif

在哪里

void cerrLogPrint( const char* const log, const char* filename, unsigned int line)
{
     //PRINT
}
于 2012-06-18T11:31:51.350 回答