为什么使用VS2019以 Release 版本运行程序时, assert 还会生效?

调试帮助—— assert 宏和 NDEBUG 宏

assert 宏依赖于 NDEBUG ,若在头文件 assert.h 前定义了 NDEBUG ,则 assert 失效。 assert 在 Debug 版本才能生效,在 Release 版本中无法生效的原因:

Release 版本会自动定义 NDEBUG 宏

Debug 版本会自动定义 _DEBUG 宏

可能有些人会出现选了 Release 版本但是还是会执行 assert 。可以在属性右上方点击配置管理器查看 活动解决方案的配置和平台 对应的各个 项目的配置和平台

活动解决方案 Debug x64
活动解决方案 Debug x86
活动解决方案 Release x64
活动解决方案 Release x86

会发现最后一张图中,虽然活动解决方案的配置和平台是 Release x86 ,但是项目的配置和平台选用的却是 Debug 和 Win32 平台。所以才会出现明明以 Release 版本运行,而 assert 还是会生效,可以修改。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简单介绍 GoogleTest 是一个由 Google 的测试技术团队开发的测试框架,它考虑到了谷歌的特定需求和限...
    冀望的air阅读 8,634评论 0 1
  • assert assert宏定义在头文件assert.h中,其作用是如果括号内的表达式为假,则报告错误并终止程序运...
    土豆吞噬者阅读 2,944评论 0 0
  • Debug版本:调试版本包括 调试信息,所以要比Release版本 大很多(可能大数百K至数M)。Release版...
    goyohol阅读 4,442评论 0 1
  • 1、应用背景 由于采用C++编写控制台程序的过程中使用yaml文件比较多,目前使用比较的多的就是yaml-cpp[...
    雪域迷影阅读 7,042评论 0 1
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 12,186评论 16 22