当我发现此问题时,我又在玩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个位置。然后,我意识到这不是个人错误。
为什么会这样,我该如何解决?