以下に、GetLastError関数を使用してエラーメッセージを出力する方法のシンプルな例を示します。
#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, "invalid_file.txt", "r");
if (file == nullptr)
{
PrintLastError();
}
return 0;
}
この例では、GetLastError
関数を使用して直前のエラーコードを取得し、FormatMessageA
関数を使用してエラーコードに対応するエラーメッセージを取得しています。取得したエラーコードとエラーメッセージは、std::cout
を使用して出力されます。
注意点として、FormatMessageA
関数は、エラーメッセージをローカルのマルチバイト文字列(LPSTR
)として返すため、日本語のエラーメッセージを正しく表示するには、プログラムがマルチバイト文字セットでコンパイルされている必要があります。
以上が、C++でGetLastErrorを使ってエラーメッセージを出力する方法のシンプルな例です。コード例を参考にしながら、自身のプログラムに組み込んでみてください。