У меня есть несколько объектов в стеке в основной функции:
int main(...)
{
CFoo foo;
CBar bar;
}
Кроме того, у меня есть функция, которая отслеживает ошибки в моем приложении:
void Err(std::string msg)
{
SomehowLogErrorMessage(msg);
exit(1);
}
Функция Err определенно полезна, когда мне нужно сообщить фатальная ошибка. Я просто записываю ошибку и закрываю приложение - после таких ошибок оно не может восстановиться. Однако завершение с помощью «exit ()» не вызывает деструкторы foo и bar - поведение, которого я действительно ожидал (но был неправильным). «abort ()» тоже не помогает. Кроме того, Я не могу использовать исключения , чтобы поймать их в main (). Есть ли другой способ реализовать функцию Err, чтобы она завершала приложение и правильно очищала объекты стека? Или мне как-то переделать обработку ошибок?
Спасибо!
ps Кстати, нельзя ли отправить сообщение WM_QUIT в главное окно? Я плохо разбираюсь в WinAPI, но мое приложение - это чистый Win32, и моя функция Err () может получить дескриптор моего главного окна. Будет ли это работать?