Вопрос

Я пытаюсь использовать 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
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top