gpt4 book ai didi

C++ 按模块名称选择性打印 cerr 流

转载 作者:行者123 更新时间:2023-11-28 08:02:24 27 4
gpt4 key购买 nike

假设我们有一个包含 20 个模块的 30 K 行代码数据库:即每个 *.cpp 和 *.h 文件。在开发过程中,源代码装饰有通过 cerr 查找的局部变量。有时它与 gdb 一样具有优势,有时则不然。人们希望保持 cerr 流干净/无声,并且能够只从他希望的模块中获取对 cerr 的写入。我该怎么做:

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

最佳答案

编辑:事实上,最好的方法是使用日志框架(根据 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
}

关于C++ 按模块名称选择性打印 cerr 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11081714/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com