我是否需要包含隐式使用/与 WindowsAPI 通信"Windows.h"?



引自维基百科文章"Windows.h"(强调我的(:

"windows.h是C和C++编程语言的Windows专用头文件,其中包含Windows API中所有函数的声明,Windows程序员使用的所有常见宏以及各种函数和子系统使用的所有数据类型。它定义了大量可以在 C 中使用的 Windows 特定函数**。可以通过包含头文件并链接到相应的库将 Win32 API 添加到 C 编程项目中。要使用 xxxx.dll 中的函数,程序必须链接到 xxxx.lib(或 MinGW 中的 libxxxx.dll.a(。有些标头不与.dll相关联,而是与静态库相关联(例如scrnsave.h需要scrnsave.lib(。">


我的问题:

如果我希望我的可执行文件(创建为仅在 Windows 上运行(隐式与 WindowsAPI 通信/使用 WindowsAPI,我是否需要将windows.h的头文件包含在我的 C/C++ 项目中?

还是编译器自动,如果我没有指定它,并且想要隐式访问 WindowsAPI?

我的意思是不要显式使用windows.h中定义的函数、宏或数据类型。相反,如果我想通过shell隐式访问WindowsAPI的组件,例如使用cmd.exe或PowerShell。

这不仅适用于带有Win32 API的"Windows.h",也适用于(几乎(与某个API相关的任何头文件。作为一般规则,我会说在实际需要之前,您不需要包含标头。在大多数情况下,您是否需要它,请在 API 文档中说明。

例如,CreateWindow 的文档告诉您需要include Windows.h

因此,在您实际使用这个或其他函数(宏、类、#definition 等(之前,您不需要 #include 相应的标头。

windows.h是一个"超级头文件",几乎包含了所有可以想象的东西。Win API 的特定部分也有自己的标头,因此您也可以只包含您感兴趣的标头。

在 MSDN 上查找特定的 API 函数。如果它指定函数驻留在特定标头中,则您可能只包含该标头。如果它编译和链接正常,那么你就不需要windows.h。

最新更新