【问题标题】:Why does SEM_NOGPFAULTERRORBOX suppress division by zero as well?为什么 SEM_NOGPFAULTERRORBOX 也会抑制除零?
【发布时间】:2013-07-25 08:30:01
【问题描述】:

似乎SetErrorMode(SEM_NOGPFAULTERRORBOX) 禁止除以零。

要重现的代码:

SetErrorMode(SetErrorMode(0) | SEM_NOGPFAULTERRORBOX); // Comment out this line and an error dialog will appear.
int a = 5;
printf("%d", 1/(a-5));

这是为什么呢?从名字上我认为它应该只抑制一般保护错误,这与除以零无关。

【问题讨论】:

    标签: c++ winapi exception-handling divide-by-zero


    【解决方案1】:

    来自MSDN reference page

    系统不显示 Windows 错误报告对话框。

    这意味着当您设置标志时,它会抑制 所有 错误对话框。

    【讨论】:

    • 好的,谢谢。这个名字让我认为它只是关于访问违规等。
    • @sashoalm Windows API 中有很多东西随着时间的推移发生了很大的变化,因此它们最初的含义可能不再适用。如果有任何不确定的地方,请务必查看 MSDN 参考页面。
    猜你喜欢
    • 2017-10-07
    • 2010-09-07
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 2016-11-08
    • 2011-05-28
    相关资源
    最近更新 更多