如何在C ++程序中获得调试/释放条件编译

时间:2014-03-20 15:11:28

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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

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

如果此宏无效(无论出于何种原因),您

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

  2. 应该修复它,以便正确定义NDEBUG(un); <cassert>正常工作所需,您使用的代码可能依赖于此。