[windows] #defining WIN32_LEAN_AND_MEAN에서 정확히 제외하는 것은 무엇입니까?

WIN32_LEAN_AND_MEAN을 정의하는 설명에서 “빈도가 적은 API를 제외하여 Win32 헤더 파일의 크기가 줄어 듭니다”라는 것을 알았습니다. 다른 곳에서는 빌드 프로세스 속도가 빨라진다는 것을 읽었습니다.

그렇다면 WIN32_LEAN_AND_MEAN은 정확히 무엇을 배제합니까? 이 전 처리기 지시문에주의해야합니까? 빌드 프로세스가 빨라 집니까?

또한 여분의 린 라인을 따라 명명 된 프로젝트에서 전 처리기 지시문을 보았습니다. 이것이 내가 알아야 할 또 다른 난해한 전 처리기 주문입니까?



답변

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 라이브러리 의 검색에 헤더 이름을 입력 하면 일반적으로 해당 헤더 파일의 함수 목록이 생성됩니다.

또한,에서 마이크로 소프트의 지원 페이지 :

빌드 프로세스 속도를 높이기 위해 Visual C ++ 및 Windows 헤더는 다음과 같은 새로운 정의를 제공합니다.

VC_EXTRALEAN
WIN32_LEAN_AND_MEAN

이를 사용하여 Win32 헤더 파일의 크기를 줄일 수 있습니다.

마지막으로, 이러한 전 처리기 정의 중 하나를 사용하기로 선택했는데 필요한 것이 누락 된 경우 해당 헤더 파일을 직접 포함시킬 수 있습니다. MSDN에 함수 이름을 입력하면 일반적으로 페이지 하단에 사용하려는 헤더를 포함하는 항목이 생성됩니다.


답변

Windows Dev Center 에 따르면 WIN32_LEAN_AND_MEAN은 암호화, DDE, RPC, 셸 및 Windows 소켓과 같은 API를 제외합니다.


답변