2012-06-14 9 views
106

Encontré que la explicación que define WIN32_LEAN_AND_MEAN "reduce el tamaño de los archivos de encabezado de Win32 al excluir algunas de las API menos utilizadas". En otro lugar, leí que acelera el proceso de construcción.¿Qué #defining WIN32_LEAN_AND_MEAN excluye exactamente?

Entonces, ¿qué excluye WIN32_LEAN_AND_MEAN exactamente? ¿Debería importarme esta directiva de preprocesador? ¿Acelera el proceso de construcción?

También he visto una directiva de preprocesador en proyectos que reciben el nombre de algo así como extra magra. ¿Es este otro encantamiento de preprocesador esotérico que debería conocer?

Respuesta

101

Directamente desde el archivo de cabecera 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 */ 

si usted quiere saber lo que cada una de las cabeceras de hecho lo hacen, typeing los nombres de cabecera en la búsqueda en la biblioteca MSDN producirá normalmente una lista de las funciones en ese archivo de encabezado.

Asimismo, desde Microsoft's support page:

Para acelerar el proceso de construcción, Visual C++ y los encabezados de Windows proporcionan los siguientes nuevos define:

VC_EXTRALEAN
WIN32_LEAN_AND_MEAN

se les puede utilizar para reducir el tamaño de los archivos de encabezado Win32.

Finalmente, si elige usar cualquiera de estos preprocesadores, y falta algo, puede simplemente incluir ese archivo de encabezado específico usted mismo. Escribir el nombre de la función que busca en MSDN generalmente producirá una entrada que le indicará qué encabezado incluir si desea usarlo, en la parte inferior de la página.

58

De acuerdo con Windows Dev Center WIN32_LEAN_AND_MEAN excluye APIs como Cryptography, DDE, RPC, Shell y Windows Sockets.

+7

Creo que esta es la respuesta sucinta que la mayoría de nosotros estábamos buscando. –