我现在对 WinAPI 中用于 CHAR 字符串和 WCHAR 字符串的匈牙利符号前缀有点困惑。 当我们使用 CHAR 字符串时,通常会使用这样的前缀:
CHAR szString[] = "Hello";
我们有一个以零结尾的字符串 szString,所以一切都很好。 但是当我们使用 WCHAR 字符串时,通常会使用这样的前缀:
WCHAR pwszString[] = L"Hello";
它代表指向以零结尾的宽字符串的指针……但是我们的类型看起来不是这样的。指向以零终止的宽字符串的指针是 WCHAR** 或 PWSTR*。我错了吗? 为什么 CHAR 字符串是 sz 而 WCHAR 字符串是 pwsz 而不是 wsz?
最佳答案
第二个例子具有误导性(虽然并不少见)。它应该是以下两者之一:
WCHAR wszString[] = L"Hello";
WCHAR *pwszString = L"Hello";
由于数组可以在大多数需要指针的上下文中使用,因此一些程序员对这种区别有点草率。
匈牙利语不合时宜,但可以useful when used well .
关于c++ - WinAPI 中的 sz 和 pwsz 前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16017771/