最近项目比较忙,每天都会上传很多代码,同时也会合并很多别人提交的代码,突然在今天合并代码之后,项目在debug模式下运行时的assert突然无效,在百度上搜索了 assert 失效 的关键字,也没找到相关的说法,因此只好直接跟进到assert里面,发现底层的_CrtDbgMode数值的值发生了变化,默认情况应该是 [ _CRTDBG_MODE_DEBUG, _CRTDBG_MODE_WNDW, _CRTDBG_MODE_WNDW ] (即[2,4,4]),才知道是有同事为了某些原因显示的设置了报告模式,使用了
_CrtSetReportMode函数(相关说明连接:http://technet.microsoft.com/zh-cn/library/1y71x448(v=vs.110) )
,而他也全然不知这样会带来断言无效的情况。
因此只需要显示的CrtSetReportMode(_CRT_ERROR,_CRTDBG_REPORT_MODE) 或者 CrtSetReportMode(_CRT_ERROR,_CRTDBG_MODE_WNDW) 就好了