Zaglavna datoteka
Zaglávna datotéka () je v nekaterih programskih jezikih, kot so C, C++ ali Objective-C, posebna večkrat uporabljiva datoteka v kateri so zbrani določeni elementi programske izvorne kode. Zaglavne datoteke običajno vsebujejo vnaprejšnje deklaracije razredov, podprogramov (funkcij), spremenljivk in drugih identifikatorjev. Programerji, ki želijo deklarirati standardizirane identifikatorje v več kot eni izvorni datoteki, jih lahko vnesejo v eno zaglavno datoteko, ta pa se lahko potem vstavi v druge dele programa, kadar se potrebuje njena vsebina. Standardni knjižnici jezikov C in C++ običajno deklarirata svoje standardne funkcije v zaglavnih datotekah. Največkrat imajo zaglavne datoteke končnico .h.

Novejši programski jeziki, kot sta npr. java ali C#, ne uporabljajo vnaprešnjih deklaracij. Identifikatorji se  zaznajo samodejno iz izvornih datotek iz simbolov dinamičnih knjižnic, zato ti jeziki ne potrebujejo zaglavnih datotek.

Utemeljitev 

V večini sodobni računalniških programskih jezikih lahko programerji razdelijo programe v manjše komponente (npr. razrede in podprograme) in jih razporedijo med več enot prevoda, običajno v obliki dejanskih izvornih datotek, ki jih lahko sistem prevede ločeno. Ko se podprogram potrebuje nekje drugod kot v enoti prevoda, kjer je definiran, mora obstajati nanj sklic. Če je na primer na ta način definirana funkcija v izvorni datoteki:
int add(int a, int b)
{
	return a + b;
}
se lahko deklarira (s prototipom funkcije) in se nanjo sklicuje v drugi izvorni datoteki kot:
int add(int, int);
 
int triple(int x)
{
	return add(x, add(x, x)); 
}

Ena slabost takšne metode je, da mora prototip funkcije obstjati v vseh datotekah, ki uporabljajo funkcijo. Druga slabost je, da kadar se spremenijo tip vračanja funkcije ali njeni argumenti, se morajo posodobiti tudi prototipi. Ta proces se lahko avtomatizira s predprocesorjem C. V naslednji kodi je funkcija deklarirana v ločeni datoteki (imen parametrov prevajalnik ne uporablja, vendar so za programerja koristni:

Datoteka »add.h«
#ifndef ADD_H_GUARD
#define ADD_H_GUARD
int add(int a, int b); /* Ali enakovredno zapisano: int add(int , int); - brez imen parametrov */
#endif

V tej datoteki nastopajo konstrukti include guard, da ne pride do nedovoljenih večkratnih definicij funkcije. V naslednji kodi je prikazano kako se rabijo zaglavne datoteke:

#include "add.h"
int triple(int x)
{
	return add(x,add(x,x));
}

Vsakič, ko se koda prevede, bo zadnji prototip funkcije iz add.h vključen v datoteke, ki uporabljajo to funkcijo, pri tem pa ne bo prišlo do morebitnih pogubnih napak.

#define 

Zgledi nekaj predprocesorskih ukazov #define v C-jevski zaglavni datoteki:

#define dESC           0x1b
#define dEOS           ('\0')
#define dPRINT(a)      ( printf("%d",a) )
#define dDEG           *M_PI/180.0      /* a = cos (alfa dDEG); */

#define dELEM(a)       ( sizeof(a)/sizeof((a)[0]) )
#define dNITEMS(a)     ( sizeof(a)/sizeof(*(a)) )
#define dABS(a)        ( (a) < 0 ? -(a) : (a) )
#define dCDIV(a,b)     ( ((a) + (b) - 1)) / (b) )
#define dMIN(a,b)      ( (a) < (b) ? (a) : (b) )
#define dMAX(a,b)      ( (a) > (b) ? (a) : (b) )
#define dMAXM(a,b)     ( (a) < (b) ? (b) : (a) )
#define dMIN3(a,b,c)   ( (a < b ? a : b) < c ? (a < b ? a : b) : c )
#define dMAX3(a,b,c)   ( (a > b ? a : b) > c ? (a > b ? a : b) : c )
#define dIN(a,b,c)     ( (a) <= (b) && (b) <= (c) )

#ifndef dLOCAL
 #define dLOCAL extern
#endif

#define dTMPDIR        "/tmp"
#define dROUND(f)      ( (int) ((f) + 0.5) )

#define dRANDOM(a)    ( rand() % (a) )
#define dRANDOMIZE()  ( srand((unsigned) time (NULL)) )

#define dSWAP(tip,a,b) {tip temp=a; a=b; b=temp;}      /* dSWAP(char*,n1,n2) */

Izvorna koda
Programski jezik C
C++
Programski konstrukti

fr:Bibliothèque standard de C#Les en-têtes de la bibliothèque C ISO
Zaglávna datotéka ( ) je v nekaterih programskih jezikih , kot so C , C+ + ali Objective - C , posebna večkrat uporabljiva datoteka v kateri so zbrani določeni elementi programske izvorne kode . Zaglavne datoteke običajno vsebujejo vnaprejšnje deklaracije razredov , podprogramov ( funkcij ) , spremenljivk in drugih identifikatorjev . Programerji , ki želijo deklarirati standardizirane identifikatorje v več kot eni izvorni datoteki , jih lahko vnesejo v eno zaglavno datoteko , ta pa se lahko potem vstavi v druge dele programa , kadar se potrebuje njena vsebina . Standardni knjižnici jezikov C in C+ + običajno deklarirata svoje standardne funkcije v zaglavnih datotekah . Največkrat imajo zaglavne datoteke končnico \ . h . Novejši programski jeziki , kot sta npr. java ali C # , ne uporabljajo vnaprešnjih deklaracij . Identifikatorji se zaznajo samodejno iz izvornih datotek iz simbolov dinamičnih knjižnic , zato ti jeziki ne potrebujejo zaglavnih datotek . Utemeljitev V večini sodobni računalniških programskih jezikih lahko programerji razdelijo programe v manjše komponente ( npr. razrede in podprograme ) in jih razporedijo med več enot prevoda , običajno v obliki dejanskih izvornih datotek , ki jih lahko sistem prevede ločeno . Ko se podprogram potrebuje nekje drugod kot v enoti prevoda , kjer je definiran , mora obstajati nanj sklic . Če je na primer na ta način definirana funkcija v izvorni datoteki : int add( int a , int b ) { return a + b ; } se lahko deklarira ( s prototipom funkcije ) in se nanjo sklicuje v drugi izvorni datoteki kot : int add( int , int ) ; int triple ( int x ) { return add( x , add( x , x ) ) ; } Ena slabost takšne metode je , da mora prototip funkcije obstjati v vseh datotekah , ki uporabljajo funkcijo . Druga slabost je , da kadar se spremenijo tip vračanja funkcije ali njeni argumenti , se morajo posodobiti tudi prototipi . Ta proces se lahko avtomatizira s predprocesorjem C. V naslednji kodi je funkcija deklarirana v ločeni datoteki ( imen parametrov prevajalnik ne uporablja , vendar so za programerja koristni : Datoteka » add . h « #ifndef ADD_H_GUARD #define ADD_H_GUARD int add( int a , int b ) ; /* Ali enakovredno zapisano : int add( int , int ) ; - brez imen parametrov * / #endif V tej datoteki nastopajo konstrukti include guard , da ne pride do nedovoljenih večkratnih definicij funkcije . V naslednji kodi je prikazano kako se rabijo zaglavne datoteke : #include " add . h " int triple ( int x ) { return add( x ,add( x ,x ) ) ; } Vsakič , ko se koda prevede , bo zadnji prototip funkcije iz add . h vključen v datoteke , ki uporabljajo to funkcijo , pri tem pa ne bo prišlo do morebitnih pogubnih napak . #define Zgledi nekaj predprocesorskih ukazov #define v C - jevski zaglavni datoteki : #define dESC 1b #define dEOS ( ' \0' ) #define dPRINT( a ) ( printf ( " %d " ,a ) ) #define dDEG *M_PI / 180. 0 / * a = cos ( alfa dDEG ) ; * / #define dELEM( a ) ( sizeof( a ) /sizeof( ( a ) [ 0 ] ) ) #define dNITEMS( a ) ( sizeof( a ) /sizeof( *( a ) ) ) #define dABS( a ) ( ( a ) < ? - ( a ) \ : ( a ) ) #define dCDIV( a , b ) ( ( ( a ) + ( b ) - / ( b ) ) #define dMIN( a ,b ) ( ( a ) < ( b ) ? ( a ) \ : ( b ) ) #define dMAX( a ,b ) ( ( a ) > ( b ) ? ( a ) \ : ( b ) ) #define dMAXM( a , b ) ( ( a ) < ( b ) ? ( b ) \ : ( a ) ) #define dMIN3( a ,b,c ) ( ( a < b ? a \ : b ) < c ? ( a < b ? a \ : b ) \ : c ) #define dMAX3( a ,b,c ) ( ( a > b ? a \ : b ) > c ? ( a > b ? a \ : b ) \ : c ) #define dIN( a ,b, c ) ( ( a ) < = ( b ) & & ( b ) <= ( c ) ) #ifndef dLOCAL #define dLOCAL extern #endif #define dTMPDIR " /tmp " #define dROUND( f ) ( ( int ) ( ( f ) +5 ) ) #define dRANDOM( a ) ( rand ( ) % ( a ) ) #define dRANDOMIZE ( ) ( srand ( ( unsigned ) time ( NULL ) ) ) #define dSWAP( tip,a ,b ) { tip temp=a ; a=b ; b=temp ; } / * dSWAP( char* ,n1,n2) * / Izvorna koda Programski jezik C C++ Programski konstrukti fr : Bibliothèque standard de C # Les en - têtes de la bibliothèque C ISO