当dwMessageId = 35、37、40 ...等时,FormatMessage()暂停程序

时间:2018-12-25 11:48:42

标签: c++ winapi

当我发现此问题时,我又在玩C ++。我想列出遇到GetLastError();时的所有错误。我发现它只给出错误代码,所以我遇到FormatMessage();时就是这样。一切进展顺利,直到DWORD en达到35。

#include <iostream>
#include <sstream>
#include <windows.h>
#include <conio.h>

void psdem(DWORD en) {
    LPVOID error;
    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        en,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR)&error,
        0,
        NULL);
    cout << (LPCTSTR)error;
}

int main() {
    for (int i = 0 ; ((i <= 2147483647) & (i >= 0)) ; i++) {
        psdem(i);
        cout << endl;
    }
    getch();
}

这令人困惑,我坚持下去。我相信有解决此问题的解决方案,但我已经通过Internet搜索了该解决方案,但找不到解决方案。

因此,我然后编码为跳过35,然后出现37,导致程序卡住。再次,我编码为跳过它,到了40个位置。然后,我意识到这不是个人错误。

  

为什么会这样,我该如何解决?

0 个答案:

没有答案