如上所述,RTLStringcbPrintf不在NTStrsafe.h中
-
21-12-2019 - |
题
我正在尝试使用 rtlstringcbprintf winsock内核。我已经包括ntstrsafe.h,但编译器给了我错误
Error 4 error C3861: 'RtlStringCbPrintf': identifier not found c:\bw\epic_sl\musslcomm\musslcomm\commmessenger\socketx.h 124 1 CommMessenger
.
如果我使用 rtlstringcbrintfa 或 rtlstringcbrintfw 那么它确实编译。为什么我不能使用通用版本?查看NTStrsafe.h我看到 rtlstringcbprintfa 和 rtlstringcbrintfw 但没有声明 rtlstringcbprintf 虽然注释是指的,但虽然评论是指的,但虽然评论是指的,但虽然注释是指的,但是如果评论引用它,则没有声明为什么我不能使用通用形式,以便我的字符集属性选择要使用的版本?我的字符集属性设置为使用多字节字符集
解决方案
因为Windows不提供RTLStringCBPrintf为此两个功能定义。来自MSDN:
使用rtlstringcbprintfw处理Unicode字符串和 RTLStringcbrintfa处理ANSI字符串。您使用的表格取决于 您的数据..
来自MSDN的示例使用rtlstringcbprintfw()函数,而不是rtlstringcbprintf()。
您可以自己定义RTLStringcbprintf():
#if defined(UNICODE)
# define RtlStringCbPrintf RtlStringCbPrintfA
#else
# define RtlStringCbPrintf RtlStringCbPrintfW
#endif
. 不隶属于 StackOverflow