sz和pwsz前缀在WinAPI
sz and pwsz prefixes in WinAPI
我现在有点困惑的匈牙利符号前缀在WinAPI中的CHAR字符串和WCHAR字符串。当我们使用CHAR字符串时,通常使用这样的前缀:
CHAR szString[] = "Hello";
我们有一个以零结尾的字符串szString,所以一切都很好。但是当我们使用WCHAR字符串时通常使用这样的前缀:
WCHAR pwszString[] = L"Hello";
表示指向终止于零的宽字符串的指针…但我们的类型不是这样的。指向终止于零的宽字符串的指针是WCHAR**或PWSTR*。我错了吗?为什么CHAR字符串是sz, wwsz而WCHAR字符串不是wsz ?
第二个例子容易引起误解(尽管并不少见)。它应该是以下两个中的一个:
WCHAR wszString[] = L"Hello";
WCHAR *pwszString = L"Hello";
由于数组可以在大多数需要指针的上下文中使用,因此一些程序员对这种区别有点草率。
匈牙利语已经过时了,但如果使用得当,它还是很有用的。
CHAR szString[]是CHAR * szString的同义词。都是指向字符串的指针。指向以零结尾的字符串的指针是CHAR*,指向以零结尾的宽字符串的指针是WCHAR*(而不是WCHAR**)。
现在,如果你想变得迂腐,你可以(错误地)声称CHAR[]"只是一个字符数组",在这种情况下,"rgc"可能是正确的前缀。
相关文章:
- WinAPI挂钩鼠标
- 将执行、作业和WinAPI相乘
- 编译器如何在前缀和 postix 运算符之间进行区分?
- 如何在桌面C++上使用 WinApi 画线
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- Winapi:屏幕截图未显示在窗口中
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- Qt with WinAPI MouseProc
- 如何在"SUBSYSTEM:WINDOWS"下显示并输出到Windows(C++ WinApi)上的
- WinAPI 无法创建按钮
- 查找带有 Anaconda cmake 前缀的 boost-python3
- 将 Win32/WinAPI 应用程序移植到 wxWidgets
- WinAPI 检查窗口是否具有常规标题栏
- 迭代器类的重载前缀增量运算符会引发分段错误
- 如何在友元函数中使用静态成员而不添加前缀 [类名]::
- 生成前缀位掩码
- 如何使用带有矢量的 winapi 读取进程内存从另一个进程读取缓冲区?
- 将Qt集成到现有的VS项目中以取代WinAPI
- 定义宏以将前缀 0x 添加到十六进制字符串文本
- sz和pwsz前缀在WinAPI