Použití hlaviček windows
Soubory hlaviček rozhraní API systému Windows umožňují vytvářet 32bitové a 64bitové aplikace. Zahrnují deklarace pro verze Unicode i ANSI rozhraní API. Další informace naleznete v tématu Unicode v rozhraní API systému Windows. Používají datové typy, které umožňují sestavit 32bitovou i 64bitovou verzi aplikace z jediného základu zdrojového kódu. Další informace naleznete v tématu Getting Ready for 64-bit Windows. Mezi další funkce patří poznámky k záhlaví a důsledné kontroly typů.
- Visual C++ a soubory hlaviček systému Windows
- makra pro podmíněné deklarace
- Nastavení winveru nebo _WIN32_WINNT
- řízení struktury balení
- Rychlejší sestavení s menšími hlavičkovými soubory
- související témata
Visual C++ a hlavičkové soubory Windows
Microsoft Visual C++ obsahuje kopie hlaviček systému Windows, které byly aktuální v době vydání visual C++. Proto pokud nainstalujete aktualizované hlavičkové soubory ze sady SDK, můžete mít na počítači více verzí hlaviček systému Windows. Pokud nezajistíte, že používáte nejnovější verzi souborů hlaviček sady SDK, zobrazí se při kompilaci kódu, který používá funkce zavedené po vydání Visual C++: chyba C2065: nedeclarovaný identifikátor.
Makra pro podmíněné deklarace
Některé funkce, které závisí na konkrétní verzi Windows, jsou deklarovány pomocí podmíněného kódu. Díky tomu můžete pomocí kompilátoru zjistit, jestli vaše aplikace používá funkce, které nejsou podporovány v cílových verzích Windows. Chcete-li zkompilovat aplikaci, která tyto funkce používá, je nutné definovat příslušná makra. V opačném případě se zobrazí chybová zpráva C2065.
Soubory hlaviček systému Windows používají makra k označení, které verze Systému Windows podporují mnoho programovacích prvků. Proto je nutné definovat tato makra, aby používala nové funkce zavedené v každé hlavní verzi operačního systému. (Jednotlivé soubory hlaviček mohou používat různá makra, proto pokud dojde k problémům kompilace, zkontrolujte soubor hlaviček, který obsahuje definici podmíněných definic.) Další informace naleznete v tématu SdkDdkVer.h.
Následující tabulka popisuje upřednostňovaná makra použitá v souborech hlaviček systému Windows. Pokud definujete NTDDI_VERSION, musíte také definovat _WIN32_WINNT.
Minimální požadovaný systém | Hodnota pro NTDDI_VERSION |
---|---|
Windows 10 1903 "19H1" | NTDDI_WIN10_19H1 (0x0A000007) |
Windows 10 1809 "Redstone 5" | NTDDI_WIN10_RS5 (0x0A000006) |
Windows 10 1803 "Redstone 4" | NTDDI_WIN10_RS4 (0x0A000005) |
Windows 10 1709 "Redstone 3" | NTDDI_WIN10_RS3 (0x0A000004) |
Windows 10 1703 "Redstone 2" | NTDDI_WIN10_RS2 (0x0A000003) |
Windows 10 1607 "Redstone 1" | NTDDI_WIN10_RS1 (0x0A000002) |
Windows 10 1511 "Prahová hodnota 2" | NTDDI_WIN10_TH2 (0x0A000001) |
Windows 10 1507 "Prahová hodnota" | NTDDI_WIN10 (0x0A000000) |
Windows 8.1 | NTDDI_WINBLUE (0x06030000) |
Windows 8 | NTDDI_WIN8 (0x06020000) |
Windows 7 | NTDDI_WIN7 (0x06010000) |
Windows Server 2008 | NTDDI_WS08 (0x06000100) |
Windows Vista s aktualizací Service Pack 1 (SP1) | NTDDI_VISTASP1 (0x06000100) |
Windows Vista | NTDDI_VISTA (0x06000000) |
Windows Server 2003 s aktualizací Service Pack 2 (SP2) | NTDDI_WS03SP2 (0x05020200) |
Windows Server 2003 s aktualizací Service Pack 1 (SP1) | NTDDI_WS03SP1 (0x05020100) |
Windows Server 2003 | NTDDI_WS03 (0x05020000) |
Windows XP s aktualizací Service Pack 3 (SP3) | NTDDI_WINXPSP3 (0x05010300) |
Windows XP s aktualizací Service Pack 2 (SP2) | NTDDI_WINXPSP2 (0x05010200) |
Windows XP s aktualizací Service Pack 1 (SP1) | NTDDI_WINXPSP1 (0x05010100) |
Windows XP | NTDDI_WINXP (0x05010000) |
Následující tabulky popisují další makra použitá v souborech hlaviček systému Windows.
Minimální požadovaný systém | Minimální hodnota pro _WIN32_WINNT a WINVER |
---|---|
Windows 10 | _WIN32_WINNT_WIN10 (0x0A00) |
Windows 8.1 | _WIN32_WINNT_WINBLUE (0x0603) |
Windows 8 | _WIN32_WINNT_WIN8 (0x0602) |
Windows 7 | _WIN32_WINNT_WIN7 (0x0601) |
Windows Server 2008 | _WIN32_WINNT_WS08 (0x0600) |
Windows Vista | _WIN32_WINNT_VISTA (0x0600) |
Windows Server 2003 s aktualizací SP1, Windows XP s aktualizací SP2 | _WIN32_WINNT_WS03 (0x0502) |
Windows Server 2003, Windows XP | _WIN32_WINNT_WINXP (0x0501) |
Minimální požadovaná verze | Minimální hodnota _WIN32_IE |
---|---|
Internet Explorer 11.0 | _WIN32_IE_IE110 (0x0A00) |
Internet Explorer 10.0 | _WIN32_IE_IE100 (0x0A00) |
Internet Explorer 9.0 | _WIN32_IE_IE90 (0x0900) |
Internet Explorer 8.0 | _WIN32_IE_IE80 (0x0800) |
Internet Explorer 7.0 | _WIN32_IE_IE70 (0x0700) |
Internet Explorer 6.0 SP2 | _WIN32_IE_IE60SP2 (0x0603) |
Internet Explorer 6.0 SP1 | _WIN32_IE_IE60SP1 (0x0601) |
Internet Explorer 6.0 | _WIN32_IE_IE60 (0x0600) |
Internet Explorer 5.5 | _WIN32_IE_IE55 (0x0550) |
Internet Explorer 5.01 | _WIN32_IE_IE501 (0x0501) |
Internet Explorer 5.0, 5.0a, 5.0b | _WIN32_IE_IE50 (0x0500) |
Nastavení WINVER nebo _WIN32_WINNT
Tyto symboly můžete definovat pomocí příkazu #define v každém zdrojovém souboru nebo zadáním možnosti kompilátoru /D podporované jazykem Visual C++.
Pokud chcete například nastavit WINVER ve zdrojovém souboru, použijte následující příkaz:
#define WINVER 0x0502
Pokud chcete nastavit _WIN32_WINNT ve zdrojovém souboru, použijte následující příkaz:
#define _WIN32_WINNT 0x0502
Pokud chcete nastavit _WIN32_WINNT pomocí možnosti kompilátoru /D, použijte následující příkaz:
cl -c /D_WIN32_WINNT=0x0502zdroj.cpp
Informace o použití možnosti kompilátoru /D najdete v tématu /D (definice preprocesoru).
Upozorňujeme, že některé funkce představené v nejnovější verzi Systému Windows mohou být přidány do aktualizace Service Pack pro předchozí verzi Systému Windows. Proto pokud chcete cílit na aktualizaci Service Pack, možná budete muset definovat _WIN32_WINNT s hodnotou pro další hlavní verzi operačního systému. Například funkce GetDllDirectory byla zavedena v systému Windows Server 2003 a je podmíněně definována, pokud je _WIN32_WINNT 0x0502 nebo vyšší. Tato funkce byla také přidána do systému Windows XP s aktualizací SP1. Proto pokud byste chtěli definovat _WIN32_WINNT jako 0x0501 cílit na systém Windows XP, chyběly by funkce definované v systému Windows XP s aktualizací SP1.
Řízení struktury balení
Projekty by měly být zkompilovány tak, aby používaly výchozí balení struktury, což je aktuálně 8 bajtů, protože největší celočíselný typ je 8 bajtů. Tím zajistíte, že se všechny typy struktur v souborech hlaviček zkompilují do aplikace se stejným zarovnáním, jaké rozhraní API systému Windows očekává. Zajišťuje také správné zarovnání struktur s 8-bajtovými hodnotami a nezpůsobí chyby zarovnání na procesorech, které vynucují zarovnání dat.
Další informace naleznete v tématu /Zp (zarovnání člena struktury) nebo pack.
Rychlejší sestavení s menšími soubory hlaviček
Velikost souborů hlaviček Systému Windows můžete zmenšit vyloučením některých méně běžných deklarací rozhraní API následujícím způsobem:
Definujte WIN32_LEAN_AND_MEAN pro vyloučení rozhraní API, jako jsou kryptografie, DDE, RPC, Shell a Windows Sockets.
#define WIN32_LEAN_AND_MEAN
Definujte jeden nebo více symbolů API pro vyloučení rozhraní API. NOCOMM například vylučuje rozhraní API pro sériovou komunikaci. Seznam podpůrných symbolůrozhraní API najdete v tématu Windows.h.
#define NOCOMM
Související témata