Непосредственно из заголовочного файла 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 C ++ и заголовки Windows предоставляют следующие новые определения:
VC_EXTRALEAN
WIN32_LEAN_AND_MEAN
Вы можете использовать их, чтобы уменьшить размер заголовочных файлов Win32.
Наконец, если вы решите использовать любой из этих определений препроцессора, а то, что вам нужно, отсутствует, вы можете просто включить этот конкретный заголовочный файл самостоятельно. Ввод имени функции, которую вы ищете в MSDN, обычно приводит к появлению записи, которая скажет вам, какой заголовок включить, если вы хотите его использовать, внизу страницы.
winsock2.h
его, лучше убедиться, чтоWIN32_LEAN_AND_MEAN
он всегда определен, потому что в противном случае вы получите конфликтующие объявления между версиями WinSock. Поэтому мне больше нравится другой ответ, потому что он добавляет недостающие детали. Примечательно, что это показывает, каков фактический эффект этого определения. Оба отвечают на документацию попугая, и все же другой является более всесторонним, даже при том, что оба не упоминают "последствия" не использования определения (конфликт имен WinSock и т. Д.).