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
.
Если я использую rtlstringcbprintfa или rtlstringcbprintfw тогда он делает компиляцию.Почему я не могу использовать универсальную версию?Глядя в NTSTRSAFE.h Я вижу прототипы объявлений
Решение
Поскольку Windows не предоставляет rtlstringcbprintf определить для этих двух функций.От MSDN:
Используйте rtlstringcbprintfw для обработки строк Unicode и Rtlstringcbprintfa для обработки струн ANSI.Форма, которую вы используете, зависит от Ваши данные ..
Пример от MSDN использует функцию rtlstringcbprintfw (), не rtlstringcbprintf ().
Вы можете определить rtlstringcbprintf () самостоятельно:
#if defined(UNICODE)
# define RtlStringCbPrintf RtlStringCbPrintfA
#else
# define RtlStringCbPrintf RtlStringCbPrintfW
#endif
.