Answers:
直接从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库中的搜索中键入标题名称通常会在该标题文件中生成功能列表。
另外,从Microsoft的支持页面:
为了加快构建过程,Visual C ++和Windows标头提供了以下新定义:
VC_EXTRALEAN
WIN32_LEAN_AND_MEAN您可以使用它们来减小Win32头文件的大小。
最后,如果您选择使用这些预处理器定义中的任何一个,并且缺少所需的内容,则可以自己包括该特定的头文件。在MSDN中键入您要使用的函数的名称通常会在页面底部产生一个条目,该条目将告诉您是否要使用哪个标头。
根据Windows开发人员中心的说法,WIN32_LEAN_AND_MEAN不包括诸如加密,DDE,RPC,Shell和Windows套接字之类的API。
winsock2.h
它,最好确保WIN32_LEAN_AND_MEAN
始终进行定义,因为否则将在WinSock版本之间得到冲突的声明。因此,我更喜欢另一个答案,因为它增加了此处缺少的细节。值得注意的是,它显示了该定义的实际效果。两者都回答了鹦鹉的文档,而另一个都更全面,即使两者都没有提到不使用定义的“影响”(WinSock名称冲突等)。