FormatMessage () приостанавливает программу, когда dwMessageId = 35, 37, 40 ... и т. Д. - PullRequest
0 голосов
/ 25 декабря 2018

Я снова играл с 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();
}

Это сбивает с толку, и я застрял с этим.Я полагаю, что есть решение, чтобы исправить это, но я искал решение через Интернет, но я просто не могу найти решение.

Итак, я написал код, чтобы пропустить 35, а затем 37вызывает зависание программы.Снова, я закодировал, чтобы пропустить это, и 40 приходит на место.Затем я понял, что это не индивидуальная ошибка.

Почему это происходит и как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...