我希望有可能为我的程序的调试目的增加详细程度。当然,我可以在运行时使用开关/标志来做到这一点。但这可能非常低效,因为我应该将所有“if”语句添加到我的代码中。
所以,我想添加一个在编译期间使用的标志,以便在我的代码中包含可选的、通常很慢的调试操作,而不会在不需要时影响我的程序的性能/大小。这是一个例子:
/* code */
#ifdef _DEBUG_
/* do debug operations here
#endif
因此,使用 -D_DEBUG_ 编译应该可以解决问题。没有它,该部分将不会包含在我的程序中。
另一种选择(至少对于 i/o 操作)是定义至少一个 i/o 函数,例如
#ifdef _DEBUG_
#define LOG(x) std::clog << x << std::endl;
#else
#define LOG(x)
#endif
但是,我强烈怀疑这可能不是最干净的方法。那么,你会怎么做呢?