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