Sdílet prostřednictvím


#include – direktiva (C++)

Určuje preprocesoru, aby s obsahem zadaného souboru zacházel, jako by se měl nacházet ve zdrojové aplikaci v místě, kde se objeví direktiva.

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

Poznámky

Můžete uspořádat definice konstanty a makra v zahrnutých souborech a potom pomocí příkazů #include přidat tyto definice do libovolného zdrojového souboru.Zahrnuté soubory jsou také užitečné pro zahrnutí deklarace externích proměnných a komplexních datových typů.Typy je možné definovat a pojmenovat pouze jednou v zahrnutém souboru vytvořeném pro tento účel.

Hodnota path-spec je název souboru, který může být volitelně předcházen specifikací adresáře.Název souboru musí být název existujícího souboru.Syntaxe path-spec závisí na operačním systému, ve kterém je program zkompilován.

Informace o tom, jak odkazovat na sestavení v C++ aplikaci zkompilované s /CLR, viz #using.

Obě formy syntaxe způsobí náhradu této direktivy celým obsahem určeného zahrnutého souboru.Rozdíl mezi dvěma formuláři je v pořadí, ve kterém preprocesor hledá soubory hlaviček v případě, kdy je cesta zadána neúplně.Následující tabulka ukazuje rozdíl mezi dvě různými formami syntaxe.

Forma syntaxe

Akce

Citovaný formulář

Preprocesor vyhledává zahrnuté soubory v tomto pořadí:

  1. Ve stejném adresáři jako soubor, který obsahuje výraz #include.

  2. V libovolném aktuálně otevřeném adresáři zahrňte soubory v obráceném pořadí, než v jakém byly otevřeny.Hledání začne v adresáři nadřazeného souboru zahrnutí a pokračuje směrem nahoru přes adresáře všech nadřazených souborů zahrnutí.

  3. Na cestě určené každou možností kompilátoru /I.

  4. Podél cest určených proměnnou prostředí INCLUDE.

Forma lomené závorky

Preprocesor vyhledává zahrnuté soubory v tomto pořadí:

  1. Na cestě určené každou možností kompilátoru /I.

  2. Při kompilaci z příkazového řádku, podél cest, které jsou určeny proměnnou prostředí INCLUDE.

Preprocesor zastaví hledání, jakmile nalezne soubor s daným názvem.Pokud zadáte jednoznačnou, kompletní specifikaci cesty k souboru include mezi dvojité uvozovky (" "), preprocesor prohledá pouze specifikaci cesty a ignoruje standardní adresáře.

Pokud je název souboru uzavřený do dvojitých uvozovek specifikací neúplné cesty, preprocesor nejprve prohledá "rodičovský" adresář souboru.Nadřazený soubor je soubor obsahující direktivu #include.Například pokud zahrnete soubor s názvem file2 v souboru s názvem file1, file1 je nadřazený soubor.

Zahrnuté soubory mohou být vnořené, což znamená, že pokyn #include se může objevit v souboru pojmenovaným jiným pokynem #include.Například file2 může zahrnovat file3.V tomto případě bude file1 i nadále nadřazený pro file2, ale bude o dvě úrovně nadřazený pro file3.

Při vnoření souborů a když jsou kompilovány z příkazového řádku, hledání adresářů začne adresářem nadřazeného souboru a pak pokračuje přes adresáře všech souborů výše nadřazených.Hledání tedy začíná relativně vzhledem k adresáři obsahujícímu zdroj, který se právě zpracovává.Pokud soubor není nalezen, hledání se přesune do adresáře určeného možností kompilátoru /I.Nakonec jsou prohledány adresáře určené proměnnou prostředí INCLUDE.

Z vývojového prostředí je proměnná prostředí INCLUDE ignorována.Informace o postupu nastavení prohledávaných adresářů pro zahrnuté soubory (tyto informace platí také pro proměnné prostředí LIB) naleznete v tématu VC++ Directories, Projects, Options Dialog Box.

Tento příklad ukazuje začlenění souboru pomocí ostrých závorek:

#include <stdio.h>

V tomto příkladu přidá obsah souboru s názvem STDIO.H do zdrojového programu.Lomené závorky způsobí, že preprocesor začne po prohledání adresářů uvedených v možnosti kompilátoru /I hledat adresáře určené proměnnou prostředí INCLUDE pro STDIO.H.

Následující příklad ukazuje začlenění souboru pomocí citovaného formuláře:

#include "defs.h"

V tomto příkladu přidá obsah souboru určeného pomocí DEFS.H do zdrojového programu.Uvozovky znamenají, že preprocesor nejprve prohledá adresář obsahující nadřazený zdrojový soubor.

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

Specifické pro Microsoft

Pro nalezení zahrnutelných zdrojových souborů preprocesor nejprve nalezne adresáře určené možností kompilátoru /I.Pokud možnost /I není k dispozici nebo se nezdaří, preprocesor použije systémovou proměnnou INCLUDE k nalezení všech souborů include v lomených závorkách.Proměnná prostředí INCLUDE a možnost kompilátoru /I může obsahovat několik cest oddělených středníky (;).Pokud se více než jeden adresář zobrazí jako součást možnosti /I nebo v proměnné prostředí INCLUDE, preprocesor je hledá v pořadí, v jakém jsou uvedeny.

Například příkaz

CL /ID:\MSVC\INCLUDE MYPROG.C

způsobí, že bude preprocesor hledat zahrnuté soubory (například STDIO.H) v adresáři D:\MSVC\INCLUDE\.Příkazy

SET INCLUDE=D:\MSVC\INCLUDE
CL MYPROG.C

mají stejný účinek.Pokud se obě sady vyhledávání nezdaří, je generována závažná chyba kompilátoru.

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

Při zahrnutí souborů jako #include „path-spec“ začíná hledání adresáře adresářem nadřazeného souboru a pak pokračuje přes adresáře všech souborů výše nadřazených.Hledání tedy začíná relativně vzhledem k adresáři obsahujícímu zdroj souboru, který obsahuje zpracovávanou směrnici #include.Pokud není žádný nadřazený soubor a soubor nebyl nalezen, vyhledávání pokračuje, jako by název souboru byl uzavřen do lomených závorek.

Specificka produktu Microsoft END

Viz také

Referenční dokumentace

Preprocesor – direktivy