Что #defining WIN32_LEAN_AND_MEAN точно исключает?

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

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

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

Ответ 1

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

Кроме того, из страницы поддержки Microsoft:

Чтобы ускорить процесс сборки, Visual С++ и заголовки Windows обеспечивают следующие новые определяет:

VC_EXTRALEAN
WIN32_LEAN_AND_MEAN

Вы можете использовать их для уменьшения размера файлов заголовков Win32.

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