我是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和信息技术和代码浏览器和在线文档等时,这种使用提示是有帮助的,它使得在不同的编译器和不同的编程语言之间更容易地传输代码.
是的,这是一个可怕的混乱,但这并不意味着他们做错了.