【发布时间】:2013-04-07 17:17:20
【问题描述】:
我现在对 WinAPI 中用于 CHAR 字符串和 WCHAR 字符串的匈牙利符号前缀有点困惑。 当我们使用 CHAR 字符串时,通常会使用这样的前缀:
CHAR szString[] = "Hello";
我们有一个以零结尾的字符串 szString,所以一切都很好。 但是当我们使用 WCHAR 字符串时,通常会使用这样的前缀:
WCHAR pwszString[] = L"Hello";
它代表指向以零结尾的宽字符串的指针...但是我们的类型看起来不像这样。指向以零结尾的宽字符串的指针是 WCHAR** 或 PWSTR*。我错了吗? 为什么 CHAR 字符串是 sz,而 WCHAR 字符串是 pwsz 而不是 wsz?
【问题讨论】:
-
即使是匈牙利符号的发明者也说这是一个坏主意。我会忘记这一切的。
-
别出汗。名字只是一个名字。
-
与所有匈牙利符号一样,
p(应用于数组,但暗示它是一个指针)的目的是误导和混淆未来的维护者。代码很难写,为什么要更容易阅读? -
@john:不。匈牙利符号的发明者被那些指责他“匈牙利系统”的人吓坏了,这是一个坏主意。 Simonyi 使用它的方式有很多令人喜欢的地方。 en.wikipedia.org/wiki/Hungarian_notation
标签: c++ winapi wchar hungarian-notation