WIN32_LEAN_AND_MEAN 的作用

来源:互联网 发布:gcc linux 安装 编辑:程序博客网 时间:2024/05/18 21:48

MSDN的资料:   
    
  为加速生成过程,Visual   C++   提供了如下定义(这些定义通过排除一些不太常用的   API,减小了   Win32   头文件的大小):   
    
  VC_EXTRALEAN   
    
  WIN32_LEAN_AND_MEAN   
    
  VC_EXTRALEAN   定义   WIN32_LEAN_AND_MEAN   和若干   NOservice   定义,如   NOCOMM   和   NOSOUND。(有关   NOservice   定义列表,请参见头文件   Windows.h   和   MFC   头文件   afxv_w32.h。)   
    
  用   Visual   C++   应用程序向导创建的应用程序自动使用   VC_EXTRALEAN。可以在旧式   MFC   应用程序中手动定义   VC_EXTRALEAN   以加速生成过程。   
    
  非   MFC   应用程序可以定义   WIN32_LEAN_AND_MEAN   和适用的   NOservice   定义以减少生成时间。 

在一个源码中看到:#define WIN32_LEAN_AND_MEAN // make sure all macros are included

好像要表达的意思是:若 WIN32_LEAN_AND_MEAN 有定义就包含所有宏

然后我在整个VC目录里搜 WIN32_LEAN_AND_MEAN

查找全部 "WIN32_LEAN_AND_MEAN", 大小写匹配, 全字匹配, 子文件夹, 查找结果 1, "Visual C 包含目录"
D:/Program Files/Microsoft Visual Studio 8/VC/include/delayhlp.cpp(23):#define WIN32_LEAN_AND_MEAN
D:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/include/afxv_w32.h(115):#ifndef WIN32_LEAN_AND_MEAN
D:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/include/afxv_w32.h(116):#define WIN32_LEAN_AND_MEAN
D:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/include/atldef.h(519):#ifndef WIN32_LEAN_AND_MEAN
D:/Program Files/Microsoft Visual Studio 8/VC/atlmfc/include/atldef.h(520):#define WIN32_LEAN_AND_MEAN
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include/Windows.h(179):#ifndef WIN32_LEAN_AND_MEAN
D:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include/Windows.h(212):#endif /* WIN32_LEAN_AND_MEAN */

我觉得如果定义这个宏就可以包含“所有”宏的话应该有 #ifdef WIN32_LEAN_AND_MEAN 这样的句子,但没有

请问:为什么定义 WIN32_LEAN_AND_MEAN 就能包含“所有”宏 ?
网友回复:还应该是在源码中定义了这个宏吧,不是很清楚,帮顶!
网友回复:WIN32_LEAN_AND_MEAN 是WINDOWS API用于屏蔽一些不常用的API(优化应用程序)才用的。

定义了 WIN32_LEAN_AND_MEAN 就不会使用和链接 SDK 的头文件中相关的
#ifndef WIN32_LEAN_AND_MEAN
#endif //
之间涉及到的API,可以加快链接速度和减小可执行文件体积。
网友回复:那这么说 // make sure all macros are included 不是起注释作用而是警告作用了?
网友回复:依照2楼的解释,这个宏会屏蔽一些api,那么在使用这个宏的时候,如果又有一些被屏蔽掉api想要使用的话,得加上相应api的宏开关。
某种程度的警告?

原创粉丝点击