gpt4 book ai didi

c++ - C++中的仅调试ostreams?

转载 作者:IT老高 更新时间:2023-10-28 23:10:30 26 4
gpt4 key购买 nike

我已经为调试输出实现了一个ostream,它最终将调试信息发送到OutputDebugString。它的典型用法如下所示(其中 debug 是一个 ostream 对象):

debug << "some error\n";

对于发布版本,不输出这些调试语句的最痛苦和最高效的方法是什么?

最佳答案

最常见(当然也是最高效)的方法是使用预处理器删除它们,使用类似这样的东西(最简单的实现):

#ifdef RELEASE
#define DBOUT( x )
#else
#define DBOUT( x ) x
#endif

你可以说

DBOUT( debug << "some error\n" );

编辑:你当然可以让 DBOUT 更复杂一点:

#define DBOUT( x ) \
debug << x << "\n"

允许更好的语法:

DBOUT( "Value is " << 42 );

第二种选择是将 DBOUT 定义为流。这意味着您必须实现某种空流类 - 参见 Implementing a no-op std::ostream .但是,这样的流在发布版本中确实存在运行时开销。

关于c++ - C++中的仅调试ostreams?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2571157/

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