【发布时间】:2011-06-07 11:22:50
【问题描述】:
当我执行以下代码片段时,它失败并显示 错误代码 317。如何解决问题?我们正在为项目使用 Unicode 字符集
char* pszMessgeBuffer = NULL;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dwErrorId,
0, // Default language
(LPTSTR) &pszMessgeBuffer,
0,
NULL )
【问题讨论】:
-
函数末尾是否缺少分号?
-
@iammilind:OP 可以编译,所以我认为没有。
-
错误代码 317 是
ERROR_MR_MID_NOT_FOUND。所以我猜dwErrorId在某种程度上是错误的。该号码必须是有效的系统消息。 -
这是一个邪恶的演员阵容,它永远无法正常工作。它只会阻止编译器告诉你你做错了什么。使用 FormatMessageA() 或传递 wchar_t[]。
-
为什么要使用 char* 然后将其转换为宽 (LPTSTR) 字符串?那是非常糟糕的形式,不会使目标成为 char*。它不会导致这个特定的错误,但它仍然是错误的形式。在这里使用它表明您可能也在其他地方使用它。
标签: c++ visual-c++ windows-ce