【问题标题】:How to obtain debug/release conditional compiling in C++ program如何在 C++ 程序中获得调试/发布条件编译
【发布时间】:2014-03-20 15:11:28
【问题描述】:

在大型 C++/Qt/QMake/qtcreator 项目中,我想执行一些测试,但仅限于使用调试标志进行编译时。

有没有办法告诉 g++ 代码的某些小部分只能在调试模式下编译?

【问题讨论】:

  • 你使用的是 QMake 还是 CMake 和 QtCreator?
  • QMake.. 我尝试过#ifdef DEBUG、NDEBUG 和 _DEBUG,但都没有成功。我想我必须将它们放在 qmake 项目文件中的某个位置??

标签: c++ qt debugging qt-creator conditional-compilation


【解决方案1】:

执行此操作的标准方法是依赖于NDEBUG 宏,该宏由<cassert> 中定义的宏assert() 使用:

#ifdef NDEBUG
  // release mode code
#else
  // debug mode code
#endif

#ifdef 的反义词是#ifndef,当然#else 分支是可选的。

如果此宏不起作用(无论出于何种原因),您

  1. 可以尝试使用宏QT_NO_DEBUG,Qt 使用该宏的目的与Q_ASSERT() 类似;和

  2. 应该修复它,以便正确(未)定义NDEBUG<cassert> 需要它才能正常工作,您使用的代码可能取决于它。

【讨论】:

  • 谢谢,使用 QT_NO_DEBUG 或 QT_DEBUG 可以正常工作。
猜你喜欢
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-08
  • 2015-06-26
  • 1970-01-01
相关资源
最近更新 更多