本文主要是介绍#define WIN32_LEAN_AND_MEAN作用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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的宏开关。
某种程度的警告?
这篇关于#define WIN32_LEAN_AND_MEAN作用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!