C++での最後のエラーの表示方法


まず、以下のようなコードスニペットを使用して、エラーメッセージを取得します。

#include <iostream>
#include <windows.h>
void PrintLastError()
{
    DWORD errorCode = GetLastError();
    LPSTR errorMessage = nullptr;
    FormatMessageA(
        FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
        nullptr,
        errorCode,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        reinterpret_cast<LPSTR>(&errorMessage),
        0,
        nullptr
    );
    std::cout << "エラーコード: " << errorCode << std::endl;
    std::cout << "エラーメッセージ: " << errorMessage << std::endl;
    LocalFree(errorMessage);
}
int main()
{
    // エラーを発生させるコードの例
    FILE* file = nullptr;
    fopen_s(&file, "nonexistent_file.txt", "r");
    if (file == nullptr)
    {
        PrintLastError();
    }
    return 0;
}

上記のコードでは、PrintLastError関数を使用して最後のエラーを表示しています。GetLastError関数を使用してエラーコードを取得し、FormatMessageA関数を使用してエラーメッセージを取得します。エラーメッセージはUTF-8エンコーディングで取得されます。

main関数では、エラーを発生させるためにfopen_s関数を使用して存在しないファイルを開こうとしています。もしfopen_sが失敗した場合、PrintLastError関数を呼び出して最後のエラーを表示します。

この方法を使用すると、C++での最後のエラーの表示が簡単に行えます。エラーメッセージを含むブログ投稿を作成する際には、この方法が役立つでしょう。