为什么WinAPI与"普通"C有很大不同?

Inn*_*nno 5 winapi

我想知道为什么WinAPI与"普通"C编程有很大的不同?

我的意思是,在学校我了解到每个C程序都有一个main()函数(WinAPI使用带有一些特殊参数的WinMain),一些变量类型,如int,long,char等.(WinAPI使用类似LPCSTR,BOOL等的东西)那么为什么微软决定采用与他们的OS API不同的方式呢?

当我看到我的第一个WinAPI程序时,它看起来更像是一种新语言...;)

Ari*_*yck 15

最初的Windows API是在25年前的1984-85时间框架内设计的.匈牙利表示法风靡一时,因此将变量的类型放入声明中就可以了.例如,在纯C中,没有办法指示'far'指针,这是LPCSTR中指示的LP,但在1985年,区分常规指针和远指针非常重要.(当90位窗口在90年代中期接管时,这种重要性被抛到了一边,但语法仍然存在......)

此外,C并没有真正区分指向char的指针和指向静态字符串的指针.因此lpsz类型.

最后,它是关于为参数带来比1984年允许的普通C更强,更一致的类型.至于WinMain,这是因为Windows程序与命令行程序有根本的不同.如果你查看库,你可能会找到一个main()函数来设置参数然后调用extern WinMain函数(即你的).