Вопрос по visual-c++, windows – Что точно исключает #defining WIN32_LEAN_AND_MEAN?

127

Я нашел объяснение, согласно которому WIN32_LEAN_AND_MEAN «уменьшает размер заголовочных файлов Win32, исключая некоторые из менее часто используемых API». Где-то еще я читал, что это ускоряет процесс сборки.

Итак, что именно исключает WIN32_LEAN_AND_MEAN? Должен ли я заботиться об этой директиве препроцессора? Ускоряет ли это процесс сборки?

Я также видел директиву препроцессора в проектах, названных как-то по принципу extra lean. Это еще одно эзотерическое заклинание препроцессора, о котором я должен знать?

Ваш Ответ

2   ответа
84

Центр разработки Windows WIN32_LEAN_AND_MEAN исключает API, такие как криптография, DDE, RPC, Shell и Windows Sockets.

Я думаю, что это краткий ответ, который большинство из нас искали.
120

#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 Библиотека обычно создает список функций в этом заголовочном файле.

Также изСтраница поддержки Microsoft:

To speed the build process, Visual C++ and the Windows Headers provide the following new defines:

VC_EXTRALEAN
WIN32_LEAN_AND_MEAN

You can use them to reduce the size of the Win32 header files.

Наконец, если вы решите использовать любой из этих препроцессоров, а то, что вам нужно, отсутствует, вы можете просто включить этот конкретный заголовочный файл самостоятельно. Ввод имени функции, после которой вы вводите в MSDN, обычно приводит к появлению записи, которая скажет вам, какой заголовок включить, если вы хотите его использовать, внизу страницы.

Похожие вопросы