当前位置:  开发笔记 > 编程语言 > 正文

如何在C/C++中将assert放入发布版本中

如何解决《如何在C/C++中将assert放入发布版本中》经验,为你挑选了3个好方法。

我只需要运行ship build,我需要在发布版本中断言某些条件以查看问题是否已修复.我该怎么做?



1> Michael Burr..:

取消定义NDEBUG宏 - 您可以围绕要保留在构建中的断言在本地执行此操作:

#undef NDEBUG
#include    // reinclude the header to update the definition of assert()

或者做任何你需要做的事情,这样你的构建过程就不会首先定义NDEBUG宏.



2> Baiyan Huang..:

为什么不定义自己的断言:

#define assert(x) MessageBox(...);


投票,因为这是唯一的圣徒建议.虽然建议输入一个行号,并解释出错的原因.虽然接下来还要设计你自己的崩溃系统,所以当一个断言命中时,你会自动发送给你的内存转储.
我喜欢这个,但是想提出一个六年后期的建议 - 为你的断言使用一个不同的名称,你希望在发布和调试版本中存在如`ndbgassert`或类似的东西.这样你就可以在两者之间做出选择.

3> Daniel Daran..:

只需直接调用assert在发布模式下处于活动状态的宏定义部分即可.

在Miro Samek(PDF)这篇伟大的文章中,您可以找到非常有用的C++断言定义.然后你可以稍微调整它们以满足你的需求.例如,您可以创建另一个宏,release_assert它与assert相同,但无论它是处于释放模式还是调试模式.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有