在用VC++12.0进行编译的时候,如果加入了宏_HAS_EXCEPTIONS=0,同时直接或者间接的包含了头文件concrt.h,将会产生一个编译错误:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\concrt.h(4774) : error C3861: '__uncaught_exception': identifier not found
关于宏_HAS_EXCEPTIONS=0 ,微软没有正式说明,也不支持。由于历史原因,该宏在STL库的某些部分用到了,但是该宏与ConcRT库(包含concrt.h)不兼容。
解决的方法是使用文本编辑器打开项目文件.vcxproj,将_HAS_EXCEPTIONS=0的部分都删掉。
参考链接:http://stackoverflow.com/questions/34273095/c-visual-studio-2012-issues