c++ - WinAPI 中的 sz 和 pwsz 前缀

标签 c++ winapi wchar hungarian-notation

我现在对 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/

相关文章:

c++ - 为矩阵构建无效使用非静态数据成员

c++ - FreeType 如何呈现 ü ä ö 等特殊字符?

c# - 打开/关闭监视器

windows - 继承 Windows ThreadHandle

windows - Windows NT 是否缓存或刷新 INI 文件写入内容?

c++ - wchar_t 数组

c++ - 如果也有静态成员,如何对类的成员进行排序?

c++ - CBitmap 和 CImage 可以互换吗?

c - fwprintf : only the first character from a wide char array argument gets copied to output

c - C/C++ 中文件读取的重命名文件的扩展问题