为什么使用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 还是会生效,可以修改。

你可能感兴趣的:(为什么使用VS2019以 Release 版本运行程序时, assert 还会生效?)