我有一个关于为 Windows 编写应用程序的问题。在 ANSI C 中编程时,我可以使用 WinAPI 和 DWMApi(航空玻璃、色带等)吗?我现在正在看 MSDN,他们使用 C++。
3 回答
Windows API 是一个 C API,可以与任何支持“标准”调用约定的编译器一起使用。
不过,Microsoft 已做出战略决定,将他们自己的 C 编译器置于生命支持中,而在使用 Visual Studio 时,您会被 C90(带有一些特定扩展名)卡住。您可以使用支持更多现代语言方言的 3rd 方编译器(通过 MinGW、Pelles C 的 GCC 和 Clang)。
尝试一下。
大多数 API 实际上是 C-API;他们只是称它为 C++,因为“没有人”真的不再使用 C。我还注意到偶尔带有附加功能的结构,但绝对不是在 Win32 中,对于 C 语言,它们可能只是#ifdef。
我现在不知道的是,仅与 C 一起使用时标头是否“安全”,以及库是否具有未损坏的符号。我会假设他们是,但永远不知道。但是,制作一个只调用单个 Win32 API 函数的简单 C 程序应该澄清这一点。
Win32 API 可以从许多不同的工具集中访问。我遇到的所有 Windows 的 C 编译器都可以调用所有 Win32 API。更重要的是,所有这些 C 编译器都可以调用 COM API 甚至 GDI+,这是一个非常以 C++ 为中心的库。但是 MS 提供了一个供 C 客户端使用的桥梁。
因此,总而言之,选择使用 C 不会剥夺您对 Win32 任何部分的访问权限。