我最近实施了一些量化的异常处理赶上我们的软件错误。就像我们刚刚从VC6转换为VS2005这是特别有用。我们遇到与使用STL库的几个问题(一般人做的事情,他们不应该)。我试图抓住这些错误与我的向量异常处理程序。

然而,这似乎并没有被调用,而不是这些错误在内部由Microsoft Visual Studio的C运行库处理。

我的问题是;

有没有一种方法来关闭运行时错误检查并获得通过的例外VE处理?

由于 富

有帮助吗?

解决方案

http://msdn.microsoft.com /en-us/library/aa985973%28VS.80%29.aspx

#define _SECURE_SCL 1
#define _SECURE_SCL_THROWS 1

上面允许我抛出异常。

其他提示

可以关闭额外的运行时检查。然而,这并不是所有捕获的错误将导致,您可以拦截崩溃。

在一个旁注:这些检查通常会消耗显著性能,并且,在默认情况下,而不是在发布版本截止。

#define _SECURE_SCL 0

这是最好通过项目设置要做到这一点,因为你可以得到讨厌连接问题,如果设置内或文件之间的区别。

我前一阵子就遇到了这个问题,我花了一些时间来回绕他们在运行时在做什么我的头。我建议读 “从Visual c的以前的版本移植++” MSDN上至少两次。然后阅读“扩展到C库,第I部分:边界检查接口(ISO / IEC TR 24731-1)“ 。后者是标准大多数参数检查的东西是基于

一旦你了解他们正在做什么,只是在你的项目设置定义_CRT_SECURE_NO_DEPRECATE_SECURE_SCL_SECURE_SCL_THROWS。然后确保你的 “启用C ++异常”的设置为 “是与SEH例外(/ EHA)” “基本运行时检查”的设置为 “默认”的在您的项目。至少,这就是为我们工作现在。这也需要一些时间来删除,我们已经在VC6创建尽管不正确的代码。

这是你能做的最重要的事情是预留了几个星期,真正深入到各个选项和宏做。然后找出你的代码是什么在起作用。我们没有做到这一点足够早,它伤害了很多次,我们有一些“坏构建”做出来的工程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top