web-dev-qa-db-fra.com

Qu'est-ce que #defining WIN32_LEAN_AND_MEAN exclut exactement?

J'ai trouvé l'explication définissant WIN32_LEAN_AND_MEAN "réduit la taille des fichiers d'en-tête Win32 en excluant certaines des API les moins fréquemment utilisées". Ailleurs, j'ai lu que cela accélère le processus de construction.

Alors qu'est-ce que WIN32_LEAN_AND_MEAN exclut exactement? Devrais-je me soucier de cette directive pré-processeur? Cela accélère-t-il le processus de construction?

J'ai également vu une directive du préprocesseur dans des projets nommés quelque chose du genre "extra maigre". Est-ce une autre incantation de préprocesseur ésotérique que je devrais connaître?

145
fishfood

Directement à partir du fichier d'en-tête 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 vous voulez savoir ce que font chacun des en-têtes, tapez les noms des en-têtes dans la recherche dans la bibliothèque MSDN produira généralement une liste des fonctions dans ce fichier d'en-tête.

Aussi, à partir de page de support de Microsoft :

Pour accélérer le processus de génération, Visual C++ et les en-têtes Windows fournissent les nouvelles définitions suivantes:

VC_EXTRALEAN
WIN32_LEAN_AND_MEAN

Vous pouvez les utiliser pour réduire la taille des fichiers d'en-tête Win32.

Enfin, si vous choisissez d'utiliser l'un de ces préprocesseurs et qu'il vous manque quelque chose, vous pouvez simplement inclure vous-même ce fichier d'en-tête spécifique. En tapant le nom de la fonction que vous recherchez dans MSDN, vous obtiendrez généralement une entrée qui vous indiquera l'en-tête à inclure si vous souhaitez l'utiliser, au bas de la page.

136
bitwise

Conformément à Centre de développement Windows WIN32_LEAN_AND_MEAN exclut les API telles que Cryptography, DDE, RPC, Shell et Windows Sockets.

99
Chris911