#include – direktiva (C/C++)

Řekne preprocesoru, aby zahrnoval obsah zadaného souboru v místě, kde se direktiva zobrazuje.

Syntaxe

#include "path-spec"
#include <path-spec>

Poznámky

Do souborů include (označovaných také jako soubory hlaviček) můžete uspořádat konstantní definice a definice maker a pak je pomocí #include direktiv přidat do libovolného zdrojového souboru. Zahrnutí souborů je také užitečné pro začlenění deklarací externích proměnných a složitých datových typů. Typy mohou být definovány a pojmenovány pouze jednou v souboru zahrnutí vytvořeném pro tento účel.

Specifikace cesty je název souboru, který může volitelně předcházet specifikaci adresáře. Název souboru musí pojmenovat existující soubor. Syntaxe specifikace cesty závisí na operačním systému, na kterém je program kompilován.

Informace o tom, jak odkazovat na sestavení v aplikaci C++, která je kompilována pomocí /clr, naleznete v direktivě#using.

Obě formy syntaxe způsobují #include nahrazení direktivy celým obsahem zadaného souboru. Rozdíl mezi těmito dvěma formuláři je pořadí cest, které preprocesor hledá, když je cesta neúplně zadaná. Následující tabulka ukazuje rozdíl mezi těmito dvěma formuláři syntaxe.

Formulář syntaxe Akce
Formulář s citacemi Preprocesor hledá soubory zahrnutí v tomto pořadí:

1) Ve stejném adresáři jako soubor, který obsahuje #include příkaz.

2) V adresářích aktuálně otevřených souborů zahrnují soubory v obráceném pořadí, ve kterém byly otevřeny. Hledání začíná v adresáři nadřazeného souboru include a pokračuje v adresářích všech nadřazených souborů zahrnutí.

3) Podél cesty určené jednotlivými /I možnostmi kompilátoru.

4) Podél cest určených proměnnou INCLUDE prostředí.
Tvar úhlové závorky Preprocesor hledá soubory zahrnutí v tomto pořadí:

1) Podél cesty určené jednotlivými /I možnostmi kompilátoru.

2) Při kompilaci probíhá na příkazovém řádku podél cest určených proměnnou INCLUDE prostředí.

Preprocesor přestane hledat, jakmile najde soubor s daným názvem. Pokud uzavřete úplnou, jednoznačnou specifikaci cesty pro soubor include mezi dvojitými uvozovkami (" "), preprocesor prohledá pouze tuto specifikaci cesty a ignoruje standardní adresáře.

Pokud je název souboru uzavřený v uvozovkách neúplnou specifikací cesty, preprocesor nejprve prohledá adresář nadřazeného souboru. Nadřazený soubor je soubor, který obsahuje direktivu #include . Pokud například zahrnete soubor s názvem file2 do souboru s názvem file1, soubor1 je nadřazený soubor.

Zahrnout soubory lze vnořit: Direktiva #include se může zobrazit v souboru pojmenovaném jinou #include direktivou. Například soubor2 může obsahovat soubor 3. V tomto případě by soubor1 stále byl nadřazený soubor2, ale byl by to grandparent souboru3.

Pokud jsou vložené soubory vnořené a při kompilaci probíhá na příkazovém řádku, vyhledávání adresářů začíná v adresáři nadřazeného souboru. Pak pokračuje adresáři všech souborů v prarodičích. To znamená, že vyhledávání začíná vzhledem k adresáři, který obsahuje zdroj, který se právě zpracovává. Pokud se soubor nenajde, hledání se přesune do adresářů určených možností kompilátoru /I (Další adresáře zahrnutí). Nakonec se prohledávají adresáře určené proměnnou INCLUDE prostředí.

Ve vývojovém prostředí INCLUDE sady Visual Studio se proměnná prostředí ignoruje. Místo toho se použijí hodnoty zadané ve vlastnostech projektu pro adresáře zahrnutí. Další informace o tom, jak nastavit adresáře zahrnutí v sadě Visual Studio, naleznete v tématu Zahrnout adresáře a další adresáře zahrnutí.

Tento příklad ukazuje zahrnutí souboru pomocí úhlových závorek:

#include <stdio.h>

Příklad přidá obsah souboru pojmenovaného stdio.h do zdrojového programu. Úhlové závorky způsobují, že preprocesor prohledá adresáře určené proměnnou INCLUDE prostředí pro stdio.h, po vyhledávání adresářů určených možností kompilátoru /I .

Následující příklad ukazuje zahrnutí souboru pomocí formuláře s uvozováním:

#include "defs.h"

Příklad přidá obsah souboru určeného defs.h do zdrojového programu. Uvozovky znamenají, že preprocesor nejprve prohledá adresář, který obsahuje nadřazený zdrojový soubor.

Vnoření souborů zahrnutí může pokračovat až na 10 úrovní. Po dokončení zpracování vnořeného vnořeného #include souboru bude preprocesor nadále vkládat nadřazený soubor include do původního zdrojového souboru.

Specifické pro Microsoft

Chcete-li vyhledat zdrojové soubory, které se mají zahrnout, preprocesor nejprve prohledá adresáře určené možností kompilátoru /I . /I Pokud tato možnost není k dispozici nebo pokud selže, preprocesor použije proměnnou INCLUDE prostředí k vyhledání souborů zahrnutí v hranatých závorkách. Možnost INCLUDE proměnné prostředí a /I kompilátoru může obsahovat více cest oddělených středníky (;). Pokud se jako součást /I možnosti nebo v INCLUDE rámci proměnné prostředí zobrazí více než jeden adresář, preprocesor je prohledá v pořadí, ve kterém se zobrazí.

Například příkaz

CL /ID:\msvc\include myprog.c

způsobí, že preprocesor prohledá adresář D:\msvc\include\ pro zahrnutí souborů, například stdio.h. Příkazy

SET INCLUDE=D:\msvc\include
CL myprog.c

mají stejný účinek. Pokud obě sady hledání selžou, vygeneruje se závažná chyba kompilátoru.

Pokud je název souboru plně zadaný pro soubor include, který má cestu, která obsahuje dvojtečku (například F:\MSVC\SPECIAL\INCL\TEST.H), preprocesor se řídí cestou.

Pro zahrnutí souborů, které jsou zadány jako #include "path-spec", vyhledávání adresářů začíná v adresáři nadřazeného souboru a pak pokračuje adresáři všech grandparentních souborů. To znamená, že hledání začíná vzhledem k adresáři, který obsahuje zdrojový soubor, který se zpracovává. Pokud neexistuje žádný prarodičný soubor a soubor se stále nenajde, hledání bude pokračovat, jako by byl název souboru uzavřený v hranatých závorkách.

END Microsoft-specific

Viz také

Direktivy preprocesoru
/I (Další adresáře zahrnutí)