WinAPI中的sz和pwsz前缀

spa*_*dei 9 c++ winapi hungarian-notation wchar

我现在对WinAPI中用于CHAR字符串和WCHAR字符串的匈牙利表示法前缀感到困惑.当我们使用CHAR字符串时,通常使用这样的前缀:

CHAR szString[] = "Hello";
Run Code Online (Sandbox Code Playgroud)

我们有一个以零结尾的字符串szString所以一切都很好.但是当我们使用WCHAR字符串时,通常使用这样的前缀:

WCHAR pwszString[] = L"Hello";
Run Code Online (Sandbox Code Playgroud)

它代表指向零终止宽字符串的指针...但我们的类型看起来不像这样.指向零终止宽字符串的指针是WCHAR**或PWSTR*.我错了吗?为什么它是CHAR字符串和pwsz的sz而不是WCHAR字符串的wsz?

Adr*_*thy 8

第二个例子是误导(虽然并不罕见).它应该是这两个中的一个:

WCHAR wszString[] = L"Hello";
WCHAR *pwszString = L"Hello";
Run Code Online (Sandbox Code Playgroud)

由于数组可以在预期指针的大多数上下文中使用,因此一些程序员对这种区别感到有点草率.

匈牙利语不合时宜,但如果使用得当,它会很有用.