#定义WIN32_LEAN_AND_MEAN究竟排除了什么?

我find了定义WIN32_LEAN_AND_MEAN的解释“通过排除一些不常用的API来减小Win32头文件的大小”。 我读过的其他地方,它加快了构build过程。

那么WIN32_LEAN_AND_MEAN究竟排除了什么? 我应该关心这个预处理器指令吗? 它是否加速构build过程?

我还在项目中看到了一个预处理器指令,这个指令沿着额外精益的路线命名。 这是另一个深奥的预处理器咒语,我应该知道吗?

直接从Windows.h头文件中获取:

#ifndef WIN32_LEAN_AND_MEAN #include <cderr.h> #include <dde.h> #include <ddeml.h> #include <dlgs.h> #ifndef _MAC #include <lzexpand.h> #include <mmsystem.h> #include <nb30.h> #include <rpc.h> #endif #include <shellapi.h> #ifndef _MAC #include <winperf.h> #include <winsock.h> #endif #ifndef NOCRYPT #include <wincrypt.h> #include <winefs.h> #include <winscard.h> #endif #ifndef NOGDI #ifndef _MAC #include <winspool.h> #ifdef INC_OLE1 #include <ole.h> #else #include <ole2.h> #endif /* !INC_OLE1 */ #endif /* !MAC */ #include <commdlg.h> #endif /* !NOGDI */ #endif /* WIN32_LEAN_AND_MEAN */ 

如果您想知道每个头文件实际做了什么,在MSDN库中的search中键入头文件名通常会生成该头文件中的函数列表。

另外,从微软的支持页面 :

为了加快构build过程,Visual C ++和Windows头文件提供了以下新的定义:

VC_EXTRALEAN
WIN32_LEAN_AND_MEAN

您可以使用它们来减小Win32头文件的大小。

最后,如果您select使用这些预处理器中的任何一种,并且缺less某些您需要的内容,您可以自己包含该特定的头文件。 在MSDN中input你要使用的函数的名字通常会生成一个条目,告诉你如果你想使用它,在页面的底部将包含哪个头文件。

根据Windows开发中心的说法,WIN32_LEAN_AND_MEAN不包括诸如encryption,DDE,RPC,Shell和Windows套接字之类的API。