首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ FormatMessage 參數詳解:獲取系統錯誤信息字符串

     編輯:程式設計綜合問答

代碼片段

FormatMessage(
    FORMAT_MESSAGE_ALLOCATE_BUFFER |
    FORMAT_MESSAGE_FROM_SYSTEM |
    FORMAT_MESSAGE_IGNORE_INSERTS,
    NULL,
    GetLastError(),
    0,
    (LPTSTR)&lpMsgBuf,
    0,
    NULL);

關鍵參數解析

參數含義
FORMAT_MESSAGE_ALLOCATE_BUFFER系統自動分配緩衝區存放格式化字符串,緩衝區指針通過 lpMsgBuf 返回。
FORMAT_MESSAGE_FROM_SYSTEM從系統消息表查找錯誤代碼對應的文本。
FORMAT_MESSAGE_IGNORE_INSERTS忽略消息中的插入序列(%1, %2...),直接返回原始模板。
(LPTSTR)&lpMsgBuf輸出參數:接收系統分配的緩衝區地址。LPTSTR 是 TCHAR*,&lpMsgBuf 取緩衝區指針變量的地址,供 API 填寫指針值。

使用後清理

// 使用完畢必須釋放緩衝區
LocalFree(lpMsgBuf);

常見誤區

  • 以為 lpMsgBuf 是字符數組,實為指針變量。
  • 忘記 LocalFree 導致內存洩漏。
  • 未包含 windows.h 或鏈接 kernel32.lib。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved