有没有人知道一个正式支持的方式来包含Qt中的debug-build only代码?例如:Qt是否提供(保证)调试定义?
#ifdef QT_DEBUG
// do something
#endif
基本上像Q_ASSERT,但是对于更复杂的测试。
我似乎无法找到任何说明Qt框架保证定义调试宏的文档。如果没有,那么非官方的方式会实现这个功能项目范围是什么?
有没有人知道一个正式支持的方式来包含Qt中的debug-build only代码?例如:Qt是否提供(保证)调试定义?
#ifdef QT_DEBUG
// do something
#endif
基本上像Q_ASSERT,但是对于更复杂的测试。
我似乎无法找到任何说明Qt框架保证定义调试宏的文档。如果没有,那么非官方的方式会实现这个功能项目范围是什么?
Qt为发布版本定义QT_NO_DEBUG
。否则定义QT_DEBUG
。
当然,您可以在.pro文件中指定任何DEFINES
,并将其范围为debug
或release
。
另一种方法是在您的项目文件中是这样写的:
debug {
DEFINES += MYPREFIX_DEBUG
}
release {
DEFINES += MYPREFIX_RELEASE
}
这样你就不会依赖于Qt的内部定义。
不是一个不合理的建议,但我**特别**希望避免额外的定义。 – 2013-12-20 09:23:38
为什么?你在额外的定义中看到什么缺点? – eSKon 2013-12-21 09:40:40
对于检查调试模式:
#ifdef QT_DEBUG
//Some codes
#endif
对于检查发布模式:
#ifndef QT_DEBUG //<== Please note... if not defined
//Some codes
#endif
你知道的任何证据表明'QT_NO_DEBUG'正式支持Qt框架境外使用? – 2012-01-10 12:07:39
不,只读源文件。尽管发布的API头文件中的定义不可能在没有很好理由的情况下更改。 – laalto 2012-01-10 15:27:19