Я пытаюсь понять, все ли эти типы одинаковы. У меня есть эта функция от 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*
в конце концов или я не прав?
wchar_t
является отличным типом, который определен, чтобы иметь те же свойства, что и один из других целочисленных типов.
Тип
wchar_t
это отдельный тип […]. Типwchar_t
должны иметь те же требования к размеру, подписи и выравниванию (3.11), что и один из других интегральных типов, называемый его базовый тип.
Таким образом, вы не можете неявно преобразовать из wchar_t*
к short*
так же, как от int*
к short*
,
Других решений пока нет …