Я использую последнее обновление Visual Studio 2019 (версия 16.5.0 Preview 2.0) и пытаюсь перехватить событие control- c. Но по какой-то причине консольная программа всегда падает перед вызовом моего обработчика. Кстати, программа вылетает, даже если я не установил какой-либо обработчик.
Может ли это быть ошибкой в компиляторе? В общем, как вы отлаживаете что-то подобное?
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <iostream>
#include <cstdint>
uint64_t iterations;
bool running;
BOOL WINAPI CtrlHandler(DWORD fdwCtrlType)
{
switch (fdwCtrlType) {
case CTRL_C_EVENT: {
running = false;
return TRUE;
} break;
default: {
return FALSE;
} break;
}
}
int main()
{
if (!SetConsoleCtrlHandler(CtrlHandler, TRUE)) {
std::cout << "Could not install control handler" << std::endl;
}
running = true;
while (running) {
iterations++;
}
std::cout << "Terminated after " << iterations << " iterations." << std::endl;
return 0;
}
![enter image description here](https://i.stack.imgur.com/aWv8Z.png)