Как правильно использовать FormatMessage() в C++?

Помните, что вы не можете windows-applications делать следующее:

{
   LPCTSTR errorText = _com_error(hresult).ErrorMessage();

   // do something with the error...

   //automatic cleanup when error goes out of scope
}

Поскольку windows класс создается и уничтожается c++ в стеке, остается errorText, указывающий windows-application на недопустимое местоположение. В windows-applications большинстве случаев это место cpp по-прежнему будет содержать windows-application строку ошибки, но эта вероятность c++ быстро исчезает при написании windows-applications многопоточных приложений.

Итак, всегда делайте error-handling это следующим образом, как windows-programming ответил Shog9 выше:

{
   _com_error error(hresult);
   LPCTSTR errorText = error.ErrorMessage();

   // do something with the error...

   //automatic cleanup when error goes out of scope
}

c++

windows

error-handling

formatmessage

2022-10-22T00:33:05+00:00