WIN32_LEAN_AND_MEAN
-
为什么要
#define WIN32_LEAN_AND_MEAN
答案很简单,因为要包含尽量精简的内容,包含了这一句编译的时候明显快多了。 -
不加载
MFC
所需的模块。如果你的工程不使用MFC
,就加上这句,这样一来在编译链接时,包括最后生成的一些供调试用的模块时,速度更快,容量更小。 -
这个不是
MFC
特有的,WIN32_LEAN_AND_MEAN
是针对Win32
相关的头文件的, 比如在包含WIN32/MFC SDK
头文件之前定义些宏, 可以通过预处理来关闭掉一些不太常用的系统接口或参数, 这样可以加快编译的速度!你可以看看Windows.h
文件里和WIN32_LEAN_AND_MEAN
相关的部分就明白了, 另外在这个文件开始部分一个注释, 这里有很多更详细的控制开关(宏)
In the Windows.h header, if WIN32_LEAN_AND_MEAN is not defined, the preprocessor will includes other headers. So if you want to not include theses headers, you must define WIN32_LEAN_AND_MEAN before #include , else it won't have any effects
#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 */