宏WIN32_LEAN_AND_MEAN

本文深入探讨了Windows头文件加载机制,解释了如何通过宏定义减少不必要的头文件加载,特别是避免了winsock.h与winsock2.h的冲突。详细介绍了这一机制的起源和作用,为开发者提供了一个更高效、简洁的编程环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作用


 定义于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 */

 

定义这个宏,将不加载一些少用的头文件

最大作用是不加载winsock.h

因为winsock.h和winsock2.h冲突

 

起源


 windows从16位向32位过渡时引入

定义这个宏,程序员可以像在16位系统那样编程:仅加载编写基础框架需要的头文件

 

转载于:https://www.cnblogs.com/sqxy110/p/4991585.html

引用\[1\]: WIN32_LEAN_AND_MEAN是一个定义,用于加速生成过程。它通过排除一些不太常用的API,减小了Win32头文件的大小。VC_EXTRALEAN定义了WIN32_LEAN_AND_MEAN和一些NOservice定义,如NOCOMM和NOSOUND。使用Visual C++应用程序向导创建的应用程序会自动使用VC_EXTRALEAN。在旧式MFC应用程序中,可以手动定义VC_EXTRALEAN以加速生成过程。非MFC应用程序可以定义WIN32_LEAN_AND_MEAN和适用的NOservice定义以减少生成时间。\[1\] 引用\[2\]: WIN32_LEAN_AND_MEAN这句话可能会导致编译时的include冲突。当屏蔽了#define WIN32_LEAN_AND_MEAN后,编译就能够正常进行。\[2\] 引用\[3\]: WIN32_LEAN_AND_MEAN的作用是不加载MFC所需的模块。如果工程不使用MFC,可以加上这句定义,以加快编译链接速度和减小生成的文件大小。但对于较大的工程,MFC中的类仍然非常有用。\[3\] 综上所述,#define WIN32_LEAN_AND_MEAN是一个定义,用于加速生成过程和减小生成文件的大小。它可以排除一些不常用的API,并减小Win32头文件的大小。在编译时可能会导致include冲突,但如果工程不使用MFC,可以使用这个定义来加快编译链接速度和减小生成文件的大小。 #### 引用[.reference_title] - *1* [#define WIN32_LEAN_AND_MEAN作用](https://blog.youkuaiyun.com/skiing_886/article/details/8791897)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [#define WIN32_LEAN_AND_MEAN 的作用](https://blog.youkuaiyun.com/weixin_30462049/article/details/94840713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [#define WIN32_LEAN_AND_MEAN](https://blog.youkuaiyun.com/weixin_30411239/article/details/97098979)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值