我正在尝试将RtlStringCbPrintf与Winsock内核一起使用。我包含了Ntstrsafe.h,但是编译器给了我错误
Error 4 error C3861: 'RtlStringCbPrintf': identifier not found c:\bw\epic_sl\musslcomm\musslcomm\commmessenger\socketx.h 124 1 CommMessenger
如果我使用RtlStringCbPrintfA或RtlStringCbPrintfW,则它会编译。为什么我不能使用通用版本?在Ntstrsafe.h中查看,虽然看到了注释,但我看到RtlStringCbPrintfA和RtlStringCbPrintfW的原型声明,但没有RtlStringCbPrintf的声明。为什么不能使用通用形式,以便我的字符集属性选择要使用的版本?我的字符集属性设置为使用多字节字符集
最佳答案
因为Windows不提供RtlStringCbPrintf定义这两个功能。来自msdn:
使用RtlStringCbPrintfW处理Unicode字符串和
RtlStringCbPrintfA处理ANSI字符串。您使用的表格取决于
您的数据..
msdn中的示例使用RtlStringCbPrintfW()函数,而不是RtlStringCbPrintf()函数。
您可以自己定义RtlStringCbPrintf():
#if defined(UNICODE)
# define RtlStringCbPrintf RtlStringCbPrintfA
#else
# define RtlStringCbPrintf RtlStringCbPrintfW
#endif
关于c++ - RtlStringCbPrintf不在ntstrsafe.h中,如所述,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25043348/