LPWSTR, wchar_t * и беззнаковый короткий указатель в переполнении стека

Я пытаюсь понять, все ли эти типы одинаковы. У меня есть эта функция от windows.h: GetCommandLine(), в UNICODE режим, и он возвращает LPWSTR, Теперь, если я копаю глубже, я вижу, как LPWSTR является wchar_t* и если я пойду еще дальше, я узнаю, что wchar_t является unsigned short (16 байт) или unsigned long (32 байта). Тем не менее, если я сделаю это:

unsigned short* SysComm = GetCommandLine();

Я получаю эту ошибку:

невозможно преобразовать из ‘LPWSTR {aka wchar_t *} в’ short unsigned int * ‘при инициализации

Итак, следует ли компилятору следовать той же логике, чтобы выяснить, что LPWSTR является unsigned short* в конце концов или я не прав?

1

Решение

wchar_t является отличным типом, который определен, чтобы иметь те же свойства, что и один из других целочисленных типов.

Тип wchar_t это отдельный тип […]. Тип wchar_t должны иметь те же требования к размеру, подписи и выравниванию (3.11), что и один из других интегральных типов, называемый его базовый тип.

Таким образом, вы не можете неявно преобразовать из wchar_t* к short* так же, как от int* к short*,

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]