Kilka słów na początek.
Plik nagłówkowy oraz źródłowy tworzą tak zwaną bibliotekę. Biblioteki zawierają funkcje, które można wykorzystać w innych programach. W celu szybszego nawigowaniu po kodzie programu zalecane jest zdefiniowanie i stosowanie jednego szablonu. W poniższym wpisie przedstawię strukturę pliku nagłówkowego oraz źródłowego z jakiej korzystam.
Zakres artykułu.
- plik nagłówkowy “.h”
- plik źródłowy “.c”
Plik nagłówkowy ".h"
Plik nagłówkowy rozpoznajemy po rozszerzeniu “.h”. Struktura tego pliku jest następująca:
#ifndef PLIK_H #define PLIK_H /* Includes ------------------------------------------------------------------*/ /* Defines -------------------------------------------------------------------*/ /* Types ---------------------------------------------------------------------*/ /* Constants -----------------------------------------------------------------*/ /* Macros --------------------------------------------------------------------*/ /* Functions -----------------------------------------------------------------*/ #endif /* PLIK_H */
Plik nagłówkowy powinien zawierać informacje, które potrzebne są użytkownikowi do poprawnego i pełnego wykorzystania biblioteki.
Zaleca się, aby plik nagłówkowy był opatrzony instrukcją warunkową preprocesora #ifndef #define i #endif. Taka struktura pliku nagłówkowego zapobiega kilkukrotnemu kompilowaniu tego samego kodu przez kompilator.
- /* Includes */ – pod tym komentarzem wstawiamy poprzez dyrektywę #include pliki wykorzystywane przez program;
- /* Defines */ – pod tym komentarzem wstawiamy dyrektywę preprocesora opatrzoną słowem kluczowym #define oraz #undef;
- /* Types */ – pod tym komentarzem wstawiamy typy wyliczeniowe “enum”, “struktury”, “unie” oraz zmienne opatrzone słowem kluczowym “extern”;
- /* Constants */ – pod tym komentarzem wstawiamy stałe które opatrzone są słowem kluczowym “const”;
- /* Macros */ – pod tym komentarzem wstawiamy makra;
- /* Functions */ – pod tym komentarzem wstawiamy deklaracje funkcji.
Plik źródłowy ".c"
Plik nagłówkowy rozpoznajemy po rozszerzeniu “.c”. Struktura tego pliku jest następująca:
/* Includes ------------------------------------------------------------------*/ /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private macros ------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Private functions declaration ---------------------------------------------*/ /* Functions -----------------------------------------------------------------*/ /* Private functions ---------------------------------------------------------*/
W odróżnieniu od pliku nagłówkowego plik źródłowy powinien zawierać informacje o których użytkownik biblioteki nie musi wiedzieć. W tym miejscu zalecane jest deklarowanie i definiowanie elementów programu ze słowem kluczowym “static”. z wyjątkiem definicji funkcji zadeklarowanych w pliku nagłówkowym, które mają być dostępne dla użytkownika.
- /* Includes */ – tak samo jak w pliku nagłówkowym;
- /* Private typedef */ – pod tym komentarzem definiujemy typy pochodne;
- /* Private define */ – tak samo jak w pliku nagłówkowym;
- /* Private macros */ – tak samo jak w pliku nagłówkowym;
- /* Private variables*/ – pod tym komentarzem definiujemy zmienne przeważnie opatrzone słowem kluczowym “static”;
- /* Private functions declaration */ – pod tym komentarzem wstawiamy deklaracje funkcji opatrzone słowem kluczowym “static”;
- /* Functions */ – pod tym komentarzem wstawiamy definiujemy ciało funkcji;
- /* Private functions */ – pod tym komentarzem wstawiamy definiujemy ciało funkcji opatrzone słowem kluczowym “static”.
Na koniec
W zależności od potrzeb struktura plików nagłówkowych i źródłowych może być modyfikowana w większym lub mniejszym stopniu, jednakże zawsze warto pamiętać o opracowaniu zasad, które będą przeciwdziałać wkradającemu się chaosowi.