我使用的碼塊和MinGW:克++版本是4.7.1WINAPI的FormatMessage使段錯誤
從MSDN的例子(參見最後一個例子中,就在 '要求' 部分):
// Formats a message string using the specified message and variable
// list of arguments.
LPWSTR GetFormattedMessage(LPWSTR pMessage, ...)
{
LPWSTR pBuffer = NULL;
va_list args = NULL;
va_start(args, pMessage);
FormatMessage(FORMAT_MESSAGE_FROM_STRING |
FORMAT_MESSAGE_ALLOCATE_BUFFER,
pMessage,
0,
0,
(LPWSTR)&pBuffer,
0,
&args);
va_end(args);
return pBuffer;
}
它出現segfaults在調用FormatMessage。 你有什麼想法爲什麼會發生這種情況,我怎麼能解決這個問題?
這是我怎麼稱呼它:
int x = 3, y = 5;
GetFormattedMessage(_T("%1 : %2"), x, y);
我用的FormatMessage因爲我不能在MinGW的使用_stprintf功能,_stprintf是一個定義了標準的swprintf和標準的swprintf itselft沒有作爲一個修復的一些有有定義錯誤%)
鑄造的東西來修復編譯器錯誤是沒有辦法了。你需要傳入一個可以填充的緩衝區。 – chris
鑄造'(LPWSTR)&pBuffer'沒問題。這是微軟要求的。閱讀msdn: lpBuffer參數是指向LPTSTR的指針;您必須將指針轉換爲LPTSTR(例如,(LPTSTR)&lpBuffer)。 – Arks
你確定問題不是由'pMessage'的內容與傳遞的參數不匹配造成的嗎? –