Bezpośrednio z pliku nagłówkowego 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 */
jeśli chcesz wiedzieć, co faktycznie robi każdy z nagłówków, wpisanie nazw nagłówków do wyszukiwania w bibliotece MSDN zwykle tworzy listę funkcji w tym pliku nagłówkowym.
Ponadto ze strony pomocy technicznej firmy Microsoft :
Aby przyspieszyć proces kompilacji, Visual C ++ i nagłówki Windows udostępniają następujące nowe definicje:
VC_EXTRALEAN
WIN32_LEAN_AND_MEAN
Możesz ich użyć do zmniejszenia rozmiaru plików nagłówkowych Win32.
Wreszcie, jeśli zdecydujesz się użyć któregokolwiek z tych definicji preprocesora, a brakuje czegoś, czego potrzebujesz, możesz po prostu samodzielnie dołączyć ten konkretny plik nagłówkowy. Wpisanie nazwy funkcji, której szukasz, w MSDN zwykle spowoduje wyświetlenie u dołu strony wpisu, który powie Ci, który nagłówek należy uwzględnić, jeśli chcesz go użyć.
winsock2.h
, lepiej upewnij się, żeWIN32_LEAN_AND_MEAN
zawsze jest zdefiniowane, ponieważ w przeciwnym razie wystąpią sprzeczne deklaracje między wersjami WinSock. Więc bardziej podoba mi się druga odpowiedź, ponieważ dodaje brakujące tutaj szczegóły. W szczególności pokazuje, jaki jest rzeczywisty efekt tego zdefiniowania. Obie odpowiedzi na dokumentację papugi, a jednak druga jest bardziej obszerna, chociaż obie nie wspominają o "konsekwencjach" nieużywania definicji (konflikty nazw WinSock itp.).