为什么工具帮助库提供两个版本的相同功能/结构



我注意到Tool Help Library提供了一些函数和结构,有两个版本:normal和以W结尾。例如:Process32First和Process32FirstW。由于他们的文件是相同的,我想知道这两者之间有什么区别?

W和A版本代表"宽"one_answers"ANSI"。在过去,他们为ANSI和unicode字符串制作了不同的函数、结构和类型。出于这个答案的目的,unicode是widechar,即每个字符2个字节,ANSI是每个字符1个字节(但实际上比这更复杂(。通过提供这两种类型,开发人员可以使用他想要的任何类型,但现在的标准是使用unicode。

如果您查看ToolHelp32头文件,它确实包括结构和函数的A和W版本。如果你找不到它们,或者你找得不够仔细,那么明确搜索标识符,你就会找到它们。如果你只是在做"视图定义",你会发现#ifdef宏。如果仍然找不到它们,请在Visual Studio项目中更改字符集,然后再次检查。

由于宽字符数组的大小是原来的两倍,如果不使用正确的类型,结构对齐将不正确。通过设置正确的字符集并使用PROCESSENTRY32而不是指示A或W,让宏为您解析它们,这是首选方法。老实说,有些API你最好使用ANSI版本,但这是你将根据经验学习的,必须自己做出决定。

这是一篇关于字符集/编码主题的优秀文章

最新更新