我试图了解这些类型是否完全相同。我在GetCommandLine()
模式下从 windows.h :UNICODE
获得此功能,并返回LPWSTR
。现在,如果我深入挖掘,我可以看到LPWSTR
是wchar_t*
的方式,如果我更进一步,我会发现wchar_t
是unsigned short
(16字节)或{{ 1}}(32字节)。但是,如果我这样做:
unsigned long
我收到此错误:
初始化无法从'LPWSTR {aka wchar_t *}转换为'short unsigned int *'
那么,编译器是否遵循相同的逻辑来发现unsigned short* SysComm = GetCommandLine();
最终是LPWSTR
还是我错了?
答案 0 :(得分:3)
wchar_t
是一个不同的类型,被定义为具有与其他整数类型相同的属性。
类型
wchar_t
是一种独特的类型[...]。类型wchar_t
应具有与其他整数类型相同的大小,符号和对齐要求(3.11),称为基础类型。
因此,您无法隐式地从wchar_t*
转换为short*
,只能从int*
隐式转换为short*
。