logo

Header-filer i C

I C språk , innehåller header-filer en uppsättning fördefinierade standardbiblioteksfunktioner. De .h är förlängningen av header-filerna i C och vi begär att använda en header-fil i vårt program genom att inkludera den med C-förbehandlingsdirektivet #omfatta.

C Header-filer erbjuder funktioner som biblioteksfunktioner, datatyper, makron, etc genom att importera dem till programmet med hjälp av ett preprocessor-direktiv #include.

Syntax för huvudfiler i C

Vi kan inkludera rubrikfiler i C genom att använda en av de givna två syntaxerna oavsett om det är en fördefinierad eller användardefinierad rubrikfil.



bash variabel
#include // for files in system/default directory or #include 'filename.h' // for files in same directory as source file>

Förprocessorn #include dirigerar kompilatorn att rubrikfilen måste bearbetas före kompilering och inkluderar alla nödvändiga datatyper och funktionsdefinitioner.

header-filer i C

C Rubrikfil

Exempel på huvudfil i C

Exemplet nedan visar användningen av rubrikfiler med standardinmatnings- och utmatningshuvudfilen 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;> }>

>

>

Produktion

Printf() is the function in stdio.h header file>

Typer av C-huvudfiler

Det finns två typer av header-filer i C:

    Standard / Redan existerande rubrikfiler Icke-standardiserade / Användardefinierade rubrikfiler

1. Standardhuvudfiler i C och deras användningsområden

Standardhuvudfiler innehåller de bibliotek som definieras i ISO-standarden för programmeringsspråket C. De lagras i kompilatorns standardkatalog och finns i alla C-kompilatorer från vilken leverantör som helst.

Det finns 31 standardhuvudfiler i den senaste versionen av C-språket. Följande är listan över några vanliga rubrikfiler i C:

Rubrikfil

Beskrivning

Den innehåller information för att lägga till diagnostik som underlättar programfelsökning.
Den används för att utföra felhanteringsoperationer som errno(), strerror(), perror(), etc.

Den innehåller en uppsättning olika plattformsberoende konstanter relaterade till flyttalsvärden. Dessa konstanter föreslås av ANSI C.

De gör programmen mer bärbara. Några exempel på konstanter som ingår i denna rubrikfil är e(exponent), b(bas/radix), etc.

Den används för att utföra matematiska operationer som sqrt() , log2() , pow() , etc.
Den används för att utföra signalhanteringsfunktioner som signal() och raise().

Den används för att utföra standardargumentfunktioner som va_start() och va_arg(). Det används också för att indikera början av

argumentlista med variabel längd och för att hämta argumenten från argumentlistan med variabel längd i programmet.

Den innehåller funktionsprototyper för funktioner som testar tecken för vissa egenskaper, och även funktionsprototyper för

funktioner som kan användas för att konvertera stora bokstäver till små bokstäver och vice versa.

Den används för att utföra in- och utdataoperationer med funktioner som scanf() , printf() , etc.

Den innehåller standardverktygsfunktioner som malloc(), realloc(), etc. Den innehåller funktionsprototyper för funktioner som tillåter förbikoppling

av den vanliga funktionsanrops- och retursekvensen.

Den används för att utföra olika funktioner relaterade till strängmanipulation som strlen() , strcmp() , strcpy() , size() etc.

Den bestämmer de olika egenskaperna hos de olika variabeltyperna. Makron som definieras i denna rubrik begränsar värdena på

olika variabeltyper som char, int och long. Dessa gränser anger att en variabel inte kan lagra något värde

bortom dessa gränser, till exempel, kan ett osignerat tecken lagra upp till ett maximalt värde på 255.

Den används för att utföra funktioner relaterade till date() och tid() som setdate() och getdate() . Det används också för att ändra systemdatumet

och få CPU-tiden respektive.

Den innehåller vanliga typdefinitioner som används av C för att utföra beräkningar.

Den innehåller funktionsprototyper och annan information som gör att ett program kan modifieras för den aktuella lokalen där det körs.

Det gör det möjligt för datorsystemet att hantera olika konventioner för att uttrycka data som tider, datum eller stora antal över hela världen.

Exempel

Exemplet nedan visar användningen av några vanliga rubrikfiler i 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;> }>

javascript anropsfunktion från html

>

"kruskals algoritm"
>

Produktion

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. Icke-standardhuvudfiler i C och deras användningsområden

Icke-standardiserade rubrikfiler är inte en del av språkets ISO-standard. De är i allmänhet alla header-filer som definieras av programmerarna för ändamål som att innehålla anpassade biblioteksfunktioner etc. De installeras manuellt av användaren eller kanske en del av kompilatorn av någon specifik leverantör.

Det finns massor av icke-standardiserade bibliotek för C-språk. Några vanliga icke-standardiserade/användardefinierade rubrikfiler listas nedan:

Rubrikfil Beskrivning
Den innehåller några användbara konsolfunktioner.
Den innehåller GNUs GUI-bibliotek för C.

Exempel

Exemplet nedan visar användningen av conio.h icke-standard header-fil.

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;> }>

>

>

Produktion

Press any key to print message Hello! Geek>

Skapa din egen huvudfil i C

Istället för att skriva en stor och komplex kod kan vi skapa våra egna header-filer och inkludera dem i vårt program för att använda när vi vill. Det förbättrar kodfunktionalitet och läsbarhet. Nedan följer stegen för att skapa vår egen rubrikfil:

Steg 1: Skriv din egen C-kod och spara den filen med .h förlängning. Nedan är illustrationen av rubrikfilen:

C




// Function to find the sum of two> // numbers passed> int> sumOfTwoNumbers(>int> a,>int> b)> {> >return> (a + b);> }>

>

index över listan

>

Steg 2: Inkludera din rubrikfil med #omfatta i ditt C-program enligt nedan:

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));> }>

>

>

Produktion

Sum is: 35>

Inklusive flera rubrikfiler

Du kan använda olika rubrikfiler i ett program. När en header-fil ingår två gånger i ett program, bearbetar kompilatorn innehållet i den header-filen två gånger. Detta leder till ett fel i programmet. För att eliminera detta fel används villkorliga förbearbetningsdirektiv.

Syntax

#ifndef HEADER_FILE_NAME #define HEADER_FILE_NAME the entire header file #endif>

Denna konstruktion kallas omslag #ifndef . När rubriken inkluderas igen, kommer villkoret att bli falskt, eftersom HEADER_FILE_NAME är definierad. Förprocessorn kommer att hoppa över hela filinnehållet, och kompilatorn kommer inte att se det två gånger.

Ibland är det viktigt att inkludera flera olika rubrikfiler baserat på programmets krav. För detta används flera villkor.

Syntax

#if SYSTEM_ONE #include 'system1.h' #elif SYSTEM_TWO #include 'system2.h' #elif SYSTEM_THREE .... #endif>