Documentation指出“使用_set_se_translator时必须使用/ EHa”。
我的问题是:应/ EHa用于项目中的所有文件/项目中的所有文件,以捕获异常或仅在调用_set_se_translator的文件中?使用_set_se_translator和编译标志
1
A
回答
2
您不仅需要这些功能,还需要捕获异常,还需要抛出并传播它们的函数。实际调用_set_se_translator
本身可能不需要用/ Eha编译,但为什么不一致?
2
检查后,我必须不同意之前所说的关于需要用/ EHa编译的所有实例。我做了一个小程序,以:
崩溃代码
__declspec(dllexport) void crashMe() { *((int*)0)=0; }
在DLL中没有任何异常在一个try/catch处理所有
- 调用代码的其他地方编译
然后
- 除非调用代码与/ EHA编译的程序会崩溃
- 没有
_set_se_translator
例外只能在catch(...)
+0
感谢您的调查! OP可能处于相同的情况:将Boost.Test与已编译的库一起使用,并且我可以仅为测试文件对象启用/ EHa –
相关问题
- 1. 无论如何获得编译标志文件中使用的编译标志?
- 2. 使用-msse编译器标志
- 3. Ubuntu 17.04和-mx32编译标志multilib
- 4. __sync_bool_compare_and_swap编译器标志和包含
- 5. Objective-C编译器标志
- 6. 用`-static`标志编译R包
- 7. 用优化标志编译C
- 8. 使用gdb而无需使用“-g”标志编译
- 9. 如何使用autoconf获取“编译”和“目标”C编译器
- 10. Xcode 4.4 - 无法添加编译器标志来编译源
- 11. 编译器内是否有预编译IPV6的标志
- 12. 如何在编译时确定OS/X上的编译标志?
- 13. CMAKE_CXX_FLAGS中重复的编译标志
- 14. 编译时-pthread标志的意义
- 15. GCC编译器标志:-lg2c -lgfortran
- 16. C++ -malign-double编译器标志
- 17. CMake Fortran编译器依赖标志
- 18. makefile编译多个源,标志不同
- 19. 编译器-march标志基准?
- 20. g ++:编译时没有-l标志
- 21. f2py的附加编译器标志
- 22. 如何设置该编译器标志?
- 23. 什么是“DNS_BLOCK_ASSERTIONS”(C编译器标志)?
- 24. 编译器无法识别标志
- 25. 处罚的MSVS编译器标志/ bigobj
- 26. 在Xcode中使用gcc编译器标志
- 27. 如何使用-g调试标志编译boost?
- 28. 使用标志时,Eclipse无法编译C项目
- 29. 使用Makefile中的标志进行编译
- 30. 仅在使用--default-library = shared时才添加编译器标志
据我已经使用读捕获/ EHA涉及安全问题,这不是好的做法。并且可能会导致性能较差的图像,因为即使编译器没有看到投掷,编译器也不会主动优化try块。 – cprogrammer
安全问题?不要这样想。没有什么好的表现,是的。你大量增加了可能导致C++异常抛出的指令数量。 – MSalters
你知道它效率低吗?也许我应该使用SEH并自己转换异常。 – cprogrammer