Programování (6) Zdrojový a hlavičkový soubor

 

Stavba programu v jazyce C a C++

Obsah souboru .c

1. dokumentační část (jméno souboru a verze, popis modulu, jméno autora)
2. potřebné #include (soubory .h), nejdříve systémové, pak vlastní
3. deklarace extern objektů (v případě, že nejsou v .h souboru)
4. definice globálních proměnných
5. lokální #define (lze umístit do .h souboru)
6. definice lokálních typů pomocí typedef (lze umístit do .h souboru)
7. definice statických globálních proměnných (globální proměnné pouze pro daný modul)
8. funkční prototypy lokálních funkcí (deklarace)
9. funkce main() – pokud v daném modulu existuje
10. definice globálních funkcí (jsou volány i z jiných modulů)
11. definice lokálních funkcí (static)

Např.:
#include <stdio.h>
#define PI 3.14
typedef struct { char jm[20]; int vek;} OSOBA;
int global;
int Secti(int x, int y);  // deklarace funkce
void main()
{
int soucet=0;
soucet=Secti(2,PI);
}
int Secti(int x, int y)  // definice funkce
{
return x+y;
}

Hlavičkové soubory

-mají příponu *.h, obsahují deklarace funkcí (hlavičky)
-obsahují:
-definice symbolických konstant a maker s parametry
-definice globálních datových typů (pomocí typedef)
-deklarace (hlavičky) funkcí
-podmíněný překlad, který zabrání jejich vícenásobnému vložení
-standardní hlavičkové soubory jsou uložení ve složce include a vkládají se
#include <název souboru.h>
-uživatelské vytváří programátor a vkládají se #include “název souboru.h“ – prohledává nejdříve aktuální adresář a pak v nastavené cestě

Stavba vlastního hlavičkového souboru

• nesmí obsahovat definice funkcí
• měl by existovat ke každému .c souboru, kromě toho s funkcí main()
• neměl by obsahovat žádné #include, kromě standardních hlavičkových souborů
• měl by za začátku obsahovat kontrolu vícenásobného vložení

#ifndef HLAVICKA
#define HLAVICKA

// obsah hlavičkového souboru…

#endif

Obsah souboru .h

1. dokumentační část
2. podmíněný překlad proti opakovanému vložení
3. definice symbolických konstant
4. definice maker s parametry
5. definice globálních typů pomocí typedef
6. deklarace globálních proměnných
7. deklarace globálních funkcí