我使用CodeBlocks和Mingw: g++版本是4.7.1
来自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;
}它在呼叫FormatMessage时发生分段故障。你知道为什么会发生这种情况吗?我该怎么解决呢?
我是这么称呼它的:
int x = 3, y = 5;
GetFormattedMessage(_T("%1 : %2"), x, y);我使用FormatMessage是因为我不能在mingw上使用_stprintf函数,_stprintf是对swprintf和swprintf本身的定义,而swprintf本身并没有定义为修复其中的一些错误%)
发布于 2014-04-04 13:33:14
FormatMessage要求您在消息字符串中传递类型信息。如果你不这样做,它就假设你的参数是C风格的字符串。MSDN说:
默认情况下,将每个值视为指向以null结尾的字符串的指针。
由于您传递的是整数,而不是字符串,因此您的调用应该类似于:
GetFormattedMessage(_T("%1!d! : %2!d!"), x, y);https://stackoverflow.com/questions/22854014
复制相似问题