v jazyk C , hlavičkové soubory obsahují sadu předdefinovaných standardních funkcí knihovny. The .h je rozšíření hlavičkových souborů v C a požadujeme použití hlavičkového souboru v našem programu jeho zahrnutím do direktivy C preprocessing #zahrnout.
Soubory C Header nabízejí funkce jako knihovní funkce, datové typy, makra atd., protože je importují do programu pomocí direktivy preprocesoru #include.
Syntaxe hlavičkových souborů v C
Soubory hlaviček můžeme zahrnout do jazyka C pomocí jedné z uvedených dvou syntaxí, ať už se jedná o předdefinovaný nebo uživatelem definovaný soubor záhlaví.
python // operátor
#include // for files in system/default directory or #include 'filename.h' // for files in same directory as source file>
Preprocesor #include nařídí kompilátoru, že hlavičkový soubor musí být zpracován před kompilací, a zahrnuje všechny potřebné datové typy a definice funkcí.

Soubor záhlaví C
Příklad souboru záhlaví v C
Níže uvedený příklad ukazuje použití hlavičkových souborů pomocí standardního vstupního a výstupního hlavičkového souboru stdio.h
C
// C program to demonstrate the use of header files> // standard input and output stdio.h header file> #include> int> main()> {> >printf>(> >'Printf() is the function in stdio.h header file'>);> >return> 0;> }> |
>
>Výstup
Printf() is the function in stdio.h header file>
Typy C hlavičkových souborů
V C existují dva typy hlavičkových souborů:
- Standardní / již existující hlavičkové soubory Nestandardní / uživatelem definované hlavičkové soubory
1. Standardní hlavičkové soubory v C a jejich použití
Standardní hlavičkové soubory obsahují knihovny definované v ISO standardu programovacího jazyka C. Jsou uloženy ve výchozím adresáři kompilátoru a jsou přítomny ve všech kompilátorech C od jakéhokoli dodavatele.
V nejnovější verzi jazyka C je k dispozici 31 standardních hlavičkových souborů. Následuje seznam některých běžně používaných hlavičkových souborů v C:
| Soubor záhlaví | Popis |
|---|---|
| Obsahuje informace pro přidání diagnostiky, která pomáhá při ladění programu. | |
| Používá se k provádění operací zpracování chyb, jako je errno(), strerror(), perror() atd. | |
| Obsahuje sadu různých konstant závislých na platformě souvisejících s hodnotami s pohyblivou řádovou čárkou. Tyto konstanty navrhuje ANSI C. Díky nim jsou programy přenosnější. Některé příklady konstant zahrnutých v tomto hlavičkovém souboru jsou - e (exponent), b (základ/základ) atd. | |
| Používá se k provádění matematických operací jako sqrt() , log2() , pow() atd. | |
| Používá se k provádění funkcí zpracování signálu, jako je signal() a raise(). | |
| Používá se k provádění standardních funkcí argumentů, jako je va_start() a va_arg(). Používá se také k označení začátku seznam argumentů proměnné délky a načtení argumentů ze seznamu argumentů proměnné délky v programu. | |
| Obsahuje funkční prototypy funkcí, které testují znaky na určité vlastnosti, a také funkční prototypy funkce, které lze použít k převodu velkých písmen na malá písmena a naopak. | |
| Používá se k provádění vstupních a výstupních operací pomocí funkcí jako scanf() , printf() atd. | |
| Obsahuje standardní pomocné funkce jako malloc(), realloc() atd. Obsahuje funkční prototypy funkcí, které umožňují obejít obvyklého volání a návratové sekvence funkce. | |
| Používá se k provádění různých funkcí souvisejících s manipulací s řetězci, jako je strlen() , strcmp() , strcpy() , size() atd. | |
| Určuje různé vlastnosti různých typů proměnných. Makra definovaná v této hlavičce omezují hodnoty různé typy proměnných jako char, int a long. Tyto limity určují, že proměnná nemůže uložit žádnou hodnotu mimo tyto limity lze například znak bez znaménka uložit až do maximální hodnoty 255. | |
| Používá se k provádění funkcí souvisejících s date() a čas() jako setdate() a getdate() . Používá se také k úpravě systémového data a získat čas procesoru. | |
| Obsahuje běžné definice typů používané C pro provádění výpočtů. | |
| Obsahuje funkční prototypy a další informace, které umožňují úpravu programu pro aktuální národní prostředí, na kterém běží. Umožňuje počítačovému systému zpracovat různé konvence pro vyjadřování dat, jako jsou časy, data nebo velká čísla po celém světě. |
Příklad
Níže uvedený příklad ukazuje použití některých běžně používaných souborů záhlaví v C.
C
// C program to illustrate> // the use of header file> // in C> #include> #include> #include> #include> // Driver Code> int> main()> {> >char> s1[20] =>'12345'>;> >char> s2[10] =>'Geeks'>;> >char> s3[10] =>'ForGeeks'>;> >long> int> res;> >// Find the value of 9^3 using a> >// function in math.h library> >res =>pow>(9, 3);> >printf>(>'Using math.h, '> >'The value is: %ld
'>,> >res);> >// Convert a string to long long int> >// using a function in stdlib.h library> >long> int> a =>atol>(s1);> >printf>(>'Using stdlib.h, the string'>);> >printf>(>' to long int: %ld
'>, a);> >// Copy the string s3 into s2 using> >// using a function in string.h library> >strcpy>(s2, s3);> >printf>(>'Using string.h, the strings'> >' s2 and s3: %s %s
'>,> >s2, s3);> >return> 0;> }> |
číst soubory json
>
>Výstup
Using math.h, The value is: 729 Using stdlib.h, the string to long int: 12345 Using string.h, the strings s2 and s3: ForGeeks ForGeeks>
2. Nestandardní hlavičkové soubory v C a jejich použití
Nestandardní hlavičkové soubory nejsou součástí normy ISO daného jazyka. Jsou to obecně všechny hlavičkové soubory definované programátory pro účely, jako je obsah vlastních funkcí knihovny atd. Jsou ručně instalovány uživatelem nebo možná součástí kompilátoru nějakým konkrétním dodavatelem.
Pro jazyk C existuje spousta nestandardních knihoven. Některé běžně používané nestandardní/uživatelem definované soubory záhlaví jsou uvedeny níže:
| Soubor záhlaví | Popis |
|---|---|
| Obsahuje některé užitečné funkce konzoly. | |
| Obsahuje knihovnu GNU GUI pro C. |
Příklad
Níže uvedený příklad ukazuje použití nestandardního hlavičkového souboru conio.h.
C
#include> #include> // Function to display a welcome message> void> displayMessage() {> >printf>(>'Hello! Geek
'>);> }> int> main() {> >// Using conio.h functions> >printf>(>'Press any key to print message
'>);> >getch();>// Wait for a key press> >// Call the additional function after a key press> >displayMessage();> >return> 0;> }> |
>
>
Výstup
Press any key to print message Hello! Geek>
Vytvořte si vlastní soubor záhlaví v C
Namísto psaní velkého a složitého kódu můžeme vytvořit vlastní hlavičkové soubory a zahrnout je do našeho programu, abychom je mohli kdykoli použít. Vylepšuje funkčnost a čitelnost kódu. Níže jsou uvedeny kroky k vytvoření vlastního souboru záhlaví:
Krok 1: Napište svůj vlastní C kód a uložte tento soubor s .h rozšíření. Níže je ilustrace hlavičkového souboru:
C
s plnou formou
// Function to find the sum of two> // numbers passed> int> sumOfTwoNumbers(>int> a,>int> b)> {> >return> (a + b);> }> |
>
index seznamu
>
Krok 2: Zahrňte svůj hlavičkový soubor s #zahrnout ve vašem programu C, jak je uvedeno níže:
C
// C++ program to find the sum of two> // numbers using function declared in> // header file> #include 'iostream'> // Including header file> #include 'sum.h'> using> namespace> std;> // Driver Code> int> main()> {> >// Given two numbers> >int> a = 13, b = 22;> >// Function declared in header> >// file to find the sum> >printf>(>'Sum is: %d'>, sumoftwonumbers(a, b));> }> |
>
>
Výstup
Sum is: 35>
Včetně souborů s více záhlavími
V programu můžete použít různé hlavičkové soubory. Když je soubor záhlaví zahrnut v programu dvakrát, kompilátor zpracuje obsah tohoto souboru záhlaví dvakrát. To vede k chybě v programu. K odstranění této chyby se používají podmíněné direktivy preprocesoru.
Syntax
#ifndef HEADER_FILE_NAME #define HEADER_FILE_NAME the entire header file #endif>
Tato konstrukce se nazývá wrapper #ifndef . Když je hlavička znovu zahrnuta, podmíněná se stane false, protože HEADER_FILE_NAME je definováno. Preprocesor přeskočí celý obsah souboru a kompilátor to dvakrát neuvidí.
Někdy je nezbytné zahrnout několik různých hlavičkových souborů na základě požadavků programu. K tomu se používá více podmínek.
Syntax
#if SYSTEM_ONE #include 'system1.h' #elif SYSTEM_TWO #include 'system2.h' #elif SYSTEM_THREE .... #endif>