Я немного запутался, я проверил WinError.h и увидел 2 отклонения E_FAIL:
//
// MessageId: E_FAIL
//
// MessageText:
//
// Unspecified error
//
#define E_FAIL _HRESULT_TYPEDEF_(0x80000008L)
//
// MessageId: E_FAIL
//
// MessageText:
//
// Unspecified error
//
#define E_FAIL _HRESULT_TYPEDEF_(0x80004005L)
Одна проблема, с которой я столкнулся, заключается в том, что я реализую расширения пространства имен, и при открытии файла, который не существует, я получаю следующее:
при возврате 0x80000008 - я получаю «Неопределенная ошибка»
при возврате 0x80004005 - я получаю желаемое поведение «Имя файла недействительно».
Так что мне использовать? какая разница? Благодарность
#if
#else
и рассматривали только определения в отдельности. Контекст, то есть окружающий код, оказался важной частью ответа на вопрос (фактически, ответ!), И это очень часто бывает. Так что из этого можно извлечь урок. :) - person Lightness Races in Orbit   schedule 15.07.2015