2012-06-14 7 views
106

Ho trovato la spiegazione che definisce WIN32_LEAN_AND_MEAN "riduce la dimensione dei file di intestazione Win32 escludendo alcune delle API meno frequentemente utilizzate". Da qualche altra parte ho letto che accelera il processo di costruzione.Cosa esclude esattamente #defining WIN32_LEAN_AND_MEAN?

Quindi cosa esclude esattamente WIN32_LEAN_AND_MEAN? Dovrei preoccuparmi di questa direttiva pre-processore? Accelera il processo di costruzione?

Ho anche visto una direttiva per il preprocessore in progetti denominata qualcosa sulla falsariga di extra lean. È questo un altro incantesimo di preprocessore esoterico che dovrei sapere?

risposta

101

Direttamente dal file di intestazione 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 */ 

se volete sapere che cosa ciascuno di intestazioni effettivamente fanno, typeing i nomi di intestazione nella ricerca nella biblioteca MSDN di solito produce un elenco di le funzioni in quel file di intestazione.

Inoltre, da Microsoft's support page:

Per velocizzare il processo di generazione, Visual C++ e le intestazioni di Windows forniscono le seguenti nuove definisce:

VC_EXTRALEAN
WIN32_LEAN_AND_MEAN

È possibile utilizzarli per ridurre la dimensione dei file di intestazione Win32.

Infine, se si sceglie di utilizzare uno di questi preprocessori e manca qualcosa, è possibile includere solo quello specifico file di intestazione. Digitando il nome della funzione che si sta cercando in MSDN di solito si produrrà una voce che indicherà quale intestazione includere se si desidera utilizzarla, nella parte inferiore della pagina.

58

In base a Windows Dev Center WIN32_LEAN_AND_MEAN esclude API come Crittografia, DDE, RPC, Shell e Windows Sockets.

+7

Penso che questa sia la risposta sintetica che molti di noi stavano cercando. –