Кажется, что 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));
Это почему? Из названия я предполагаю, что оно должно подавлять только общую ошибку защиты, которая не имеет ничего общего с делением на ноль.
Система не отображает диалоговое окно отчетов об ошибках Windows.
Это означает, что когда вы устанавливаете флаг, он подавляет все диалоги ошибок.
Других решений пока нет …