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

我是Win32 API的新手,许多新的类型开始混淆我.

一些功能需要1-2个int和3个UINTS作为参数.

>为什么不能使用int?什么是UINTS?

然后,还有其他类型:

DWORD LPCWSTR LPBOOL

>再次,我认为“原始”C类型将足够 – 为什么要引入100种新类型?

这是一个痛苦:WCHAR *

我必须遍历它,并将每个字符push_back推送到std :: string,因为没有另一种方法将其转换为一个.可怕.

>为什么选择WCHAR?为什么要重新发明轮?他们可能只是使用char *,或者?

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

早在上世纪80年代,C被认为是高级语言(是的,真的!),许多人认为它是使用抽象类型的好形式,而不是将所有内容指定为原始的int,char或void *.当我们没有IntelliSense和信息技术和代码浏览器和在线文档等时,这种使用提示是有帮助的,它使得在不同的编译器和不同的编程语言之间更容易地传输代码.

是的,这是一个可怕的混乱,但这并不意味着他们做错了.

相关文章

(1)when you ping a computer from itsafe,the ping command should return the local IP address. (...
1、点击win菜单,点击设置图标 2、选择系统选项 3、选择应用与程序选项 4、拉到最下方,选择程序与功能...
目前一直直接往Windows 2008 R2 Server中复制文件(暂时还没有搭建ftp服务),突然不能复制了,于是百度...
windows下使用vscode配合xebug调试php脚本 要下载有php_xebug.dll扩展的版本,最新版可能没有这个扩展,p...
在控制面板的程序与功能里启用和关闭windows功能打开,适用于linux的windows子系统
效果演示 推荐一个非常牛的文档网站生成器:docsify 我通过这个工具,成功将码云上的个人学习笔记发布到...