【发布时间】:2009-12-02 15:52:22
【问题描述】:
我想知道为什么 WinAPI 与“普通”C 编程有如此大的不同?
我的意思是,在学校我了解到每个 C 程序都有一个 main() 函数(WinAPI 使用带有一些特殊参数的 WinMain),一些变量类型,如 int、long、char 等(WinAPI 使用 LPCSTR、BOOL、等)那么,为什么微软决定在他们的操作系统 API 上采用如此不同的方式呢?
当我看到我的第一个 WinAPI 程序时,我觉得它更像是一门新语言... ;)
【问题讨论】:
-
Inno - 我不确定为什么 MS 将#defines 用于许多变量类型。如果你想知道他们为什么决定这样做,我会给 Charles Petzold 发电子邮件。如果有人知道,他会的。
-
@J.Polfer:对参数类型使用别名对于库代码来说非常常见。它允许作者在保持源兼容性的同时更改界面中的特定类型。您仍然可以编译有效的 16 位 Windows 代码以针对 64 位版本的 Windows,即使基础类型例如
WPARAM或LPARAM已多次更改。BOOL有不同的历史:当在 Windows 上开始工作时,C 语言中没有布尔类型。它是在 C99 中引入的。 -
顺便说一句,甚至可以使用普通的
main函数编写 GUI 应用程序,尤其是在使用 QT、wxWidgets 等 GUI 框架时。... 多次这样做。如果我没记错的话,需要一些额外的编译器标志,如果使用 MSVS(自从我上次使用以来已经有一段时间了)。没有对 minGW 采取进一步行动。
标签: winapi