gpt4 book ai didi

windows - 为什么要使用 Windows 定义的数据类型?

转载 作者:可可西里 更新时间:2023-11-01 12:00:23 28 4
gpt4 key购买 nike

我最近一直在做一些 Winsock 编程。我没有在 Windows SDK 中做太多事情。我从小就没有构建过实际的 Win32 应用程序,那时我也没有考虑过它,但现在我看到了一些已经定义的类型,它们只是简单地围绕着与平台无关的其他类型,我想知道为什么有人会在不需要时使用它们。我看不出使用 PSTR 或 DWORD 比使用本地对应部分有任何优势。在Winsock Reference有一个页面列出了所有 structs and typedefs被定义的。他们将所有结构类型定义为大写字母,我不理解在设计 Windows SDK 时决定将所有类型类型定义为大写字母时试图完成的总体策略。

我不明白为什么即使在 Windows 中编写代码时,如果他们没有也使用大写版本,为什么有人会使用大写版本,仅仅是因为它似乎会使代码更难移植,如果将来需要的话。我总是尽可能使用本地类型和原始的 Winsock 结构。我试图搜索这个问题的答案,但也许我想不出如何正确地表达查询。我缺少一些优势吗?任何人都可以为我阐明这一点吗?

最佳答案

优点是 Windows SDK 中的 typedef 将根据需要进行调整。最近历史上最好的例子可能是 DWORD_PTR,如果使用得当,它在 x64 构建中开箱即用,而你必须通过箍才能使它与你所说的一起工作“ native 类型”(即来自语言标准的类型)。

另请记住,某些 Winsock 函数与原始 BSD 套接字函数并不完全对应。因此,无论是出于遗留原因还是为了简洁,人为地将事物分开是有意义的。

对于语言标准中未定义的某些 Win32 类型也是如此,因为它们会根据您的构建进行调整,例如 LPTSTR

最后但并非最不重要的一点是,如果您曾经参与过跨平台编程并且由于各种原因不能依赖(全部或部分)stdint.h 中的类型,您会喜欢以下类型DWORD,因为它们意味着一定的宽度,每当与某些接口(interface) (API) 对话时,这都是相关的。

关于windows - 为什么要使用 Windows 定义的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10559879/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com