gpt4 book ai didi

c++ - 有没有办法打开/关闭标准 :cerr (or equivalent)?

转载 作者:行者123 更新时间:2023-11-30 01:20:40 25 4
gpt4 key购买 nike

在不使用成熟的日志记录库(或 IF 语句)的情况下 - 在 C++ 中是否有办法有时将消息打印到控制台,有时不打印?

我正在使用 std::cerr,有没有办法控制何时输出或不输出?

理想情况下我可以:

std::cerr << "Constructor called" << endl;

有办法启用/禁用这行代码吗?

最佳答案

我不确定您所说的“没有if”是什么意思,但是您可以自己编写代码而无需使用if。宏可以为您检查标志。

#define CERR if (cerr_disabled) {} else std::cerr
bool cerr_disabled = false;

然后,在您的代码中:

CERR << "error message" << std::endl;

如果 cerr_disabled 为真,则不会打印任何内容。

这种宏方法的优点是,如果错误日志记录被禁用,则不会评估任何打印参数。例如,如果您需要调用函数来创建更复杂的日志字符串:

std::string fancy_log_message () {
//...
}

CERR << fancy_log_message();

如果 cerr_disabled 为真,则不会调用 fancy_log_message()。这是仅通过抑制流对象本身无法实现的。

关于c++ - 有没有办法打开/关闭标准 :cerr (or equivalent)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19069058/

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