在我的C ++项目中,我需要使用“测试模式”。
通常,有些进程需要由其他进程生成。因为调试由另一个应用程序启动的应用程序有点棘手,我需要这种测试模式,基本上分配一个控制台,模拟其他进程的存在,创建随机数据,因此不需要使用IPC设施。
我开始在代码中使用预处理程序指令,例如:
int APIENTRY _tWinMain(...) {
#ifdef TEST_MODE_ON
AllocConsole();
...
#endif
...
#ifdef TEST_MODE_ON
FreeConsole();
...
#endif
}
但我认为从代码可读性的角度来看,这不是最好的方法。这是一种不好的做法吗? (为什么?)还有其他更好的方法吗?谢谢!
答案 0 :(得分:5)
这不是一个坏习惯,只是让代码更难以理解。我会使用类似于方法调用者宏的方法,这取决于TEST_MODE_ON
评估其他内容:
#include <stdio.h>
#ifdef TEST_MODE_ON
#define DEBUG_CALL(x) x;
#else
#define DEBUG_CALL(x)
#endif
int main(int argc, char** argv)
{
DEBUG_CALL(printf("Hello"));
}
(是的,我知道它很丑陋且不安全,但仍有效)
当然,您的编译会负责定义TEST_MODE_ON
。
答案 1 :(得分:0)
这是解决此类问题的常用方法。这有点模式可读:
#ifdef TEST_MODE
// ...
#endif
正在定义TEST_MODE
时推断它是ON
。