Przejrzyste Programowanie – #3 – Struktura pliku nagłówkowego i źródłowego

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.

Autor artykułu
Dominik Bednarski

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.