如果我知道我的程序中的某个特定的extern "C"
函数(比如RaiseException
)是引发SEH异常的唯一函数,并且我希望它们转换为C++异常,那么是否有任何方法可以为此选择性地启用/EHa
函数,以便将例外转换为CStructured_Exception
而不会膨胀,或者将其余的程序放慢为normally caused by /EHa
?如何通过/ EHsc获得/ EHa对特定功能的好处?
-1
A
回答
1
显然没有编译器选项来做到这一点。也许:
void RaiseException() {
__try {
// do something that might throw here...
}
__except(EXCEPTION_EXECUTE_HANDLER) {
throw std::exception("structured exception");
}
}
+0
我*可以*做一个包装函数,但是它感觉有点奇怪,抛出,捕获然后再抛出,这样我就可以得到一个'EXCEPTION_POINTERS'结构来提供给'CStructured_Exception'。不过,这是一个有效的选择,我猜... +1 – Mehrdad 2012-08-14 00:17:39
相关问题
- 1. 如果同时指定了EHsc和EHa,会发生什么
- 2. 我可以通过/ EHsc获得“__try”条款吗?
- 3. Android如何获得特定的偏好?
- 4. Visual C++非托管代码:对于C++异常,使用/ EHa还是/ EHsc?
- 5. LOG4J通话只对特定的功能
- 6. 获得通过功能PARAM数组
- 7. 如何获得变量通过功能的JavaScript/jQuery的
- 8. 如何通过JavaScript获得特价?
- 9. 如何通过特定的.on选择器到功能
- 10. 我如何获得通过特定的用户和特定的主题标签
- 11. 如何通过类对象angularjs功能
- 12. 如何通过的功能
- 13. 如何获得280slides.com功能?
- 14. 如何获得通过API
- 15. 如何通过预处理器定义获得函数签名?
- 16. 如何获得通过setsid
- 17. 如何获得通过SED,正则表达式或shell技能特定字符
- 18. 如何通过日期获得汇率?
- 19. 如何通过jquery.each功能
- 20. 如何通过功能
- 21. 如何获得通过
- 22. 如何针对特定标签通过特定的CSS文件
- 23. 获得一个ID功能的对象
- 24. 如何获得特定值
- 25. 如何获得通过JDBC
- 26. 如何获得通过HTTP
- 27. 通过Spring Cache抽象获得更好的性能
- 28. 如何通过批处理文件获得特殊的目录列表?
- 29. 如何通过画布获得更好的Html 5视频性能?
- 30. 我们如何获得特定动态添加TD的ID jQuery中的功能
不,它需要在呼叫站点处于活动状态。提供证据证明这两个cpu指令*真的会减慢你的代码速度。早就消除了。现在的“omigod,这是糟糕的泥”是一个没有优点的钓鱼探险队。 – 2012-08-14 00:05:29
@HansPassant:Microsoft *自己说(甚至在VS 2012文档中)*“'/ EHa”可能会导致性能降低,因为编译器不会像积极地优化'try'块,即使编译器没有看到“抛出”*,我不认为他们在说这个时犯了错误(请随时纠正我)。至于代码膨胀(这是*没有提到),这是真实的:我的可执行文件用'/ EHa'获得大约10-20%的大。我从来没有说过它“吮吸”(哎呀,至少'/ EHa'可用),我只是觉得没有必要为我不使用的东西膨胀我的可执行文件。 – Mehrdad 2012-08-14 00:14:11