gpt4 book ai didi

c - 为什么 Win32-API 有这么多自定义类型?

转载 作者:太空狗 更新时间:2023-10-29 16:24:19 26 4
gpt4 key购买 nike

我是 Win32 API 的新手,许多新类型开始让我感到困惑。

一些函数接受 1-2 个 ints 和 3 个 UINTS 作为参数。

  • 为什么他们不能只使用整数?什么是 UINT?

然后,还有那些其他类型:

DWORD LPCWSTR LPBOOL 
  • 同样,我认为“原始”C 类型就足够了 - 为什么要引入 100 种新类型?

这个很痛苦:WCHAR*

我不得不遍历它并将每个字符 push_back 到一个 std::string 因为没有另一种方法可以将它转换为一个。太可怕了。

  • 为什么是 WCHAR?为什么要重新发明轮子?他们本可以直接使用 char*,或者?

最佳答案

Windows API 最早创建于 1980 年代,多年来一直支持多种不同的 CPU 架构和编译器。他们已经从单用户单进程独立系统转变为网络化的多用户多核安全意识系统。他们必须解决 16 位与 32 位处理器以及现在的 64 位处理器的问题。他们必须解决 ANSI C 之前的编译器的问题。在早期的非标准化时代,他们必须支持 C++ 编译器。他们不得不处理分段内存。在 Unicode 存在之前,他们必须支持国际化。他们必须支持与 MS-DOS、OS/2 和 Mac OS 的某些源代码级兼容性。它们必须在几代英特尔芯片、PowerPC、MIPS、Alpha 和 ARM 上运行。桌面、服务器、移动和嵌入式系统使用相同的基本 API。

回到 1980 年代,C 被认为是一种高级语言(是的,真的!),许多人认为使用抽象类型是一种很好的形式,而不是仅仅将所有内容指定为原始 intcharvoid *。在我们还没有 IntelliSense、信息提示、代码浏览器和在线文档等的时候,这样的使用提示很有帮助,它使在不同编译器和不同编程语言之间移植代码变得更加容易。

是的,现在看起来一团糟,但这并不意味着有人做错了什么。

关于c - 为什么 Win32-API 有这么多自定义类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2647982/

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