我使用VS2017编译时遇到如下警告:
主要警告是:
warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc
产生原因:
代码中使用了C++ 异常处理程序 "try{} catch()",但是并未启用展开语义。
int main()
{
try
{
}
catch(std::exception& e)
{
std::cout << e.what() << std::endl;
}
}
解决方法:
方法一:直接修改VS项目属性配置(适合使用VS管理工程的人)
项目——属性——C/C++——代码生成——启用C++异常——是(/EHsc)——应用——确定
方法二:CMake设置(适合使用CMake管理工程的人)
在 cmakeLists.txt 文件中添加一句代码(一般在尾部添加,因为必须在add_executable或add_library执行之后,也就是生成.exe可执行文件或者.dll/.lib库文件之后):
# 指定C++ 异常处理程序try()catch的展开语义
set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "/EHsc")
以上两种方法目的一致,只是设置方式不同。