Pliki nagłówkowe w C i C++
W języku C oraz jego pochodnych, takich jak C++, pliki nagłówkowe mają rozszerzenie „h” (w C++ często używane jest „hpp”). Zawierają one opisy interfejsów modułów, w tym deklaracje zmiennych, funkcji, klas i innych struktur danych. Ich głównym celem jest uniknięcie potrzeby rekompilacji wszystkich odwołujących się modułów przy każdej zmianie w implementacji jednego z nich. W nowszych językach, takich jak Java czy C#, pliki nagłówkowe nie są już wymagane.
Podczas kompilacji, preprocesor wstawia zawartość tych plików w miejsce instrukcji #include
. Dołączenie pliku nagłówkowego z lokalnego katalogu odbywa się za pomocą podwójnych cudzysłowów, natomiast nazwy w ostrych nawiasach wskazują na standardowe pliki nagłówkowe kompilatora.
Zawartość plików nagłówkowych
Pliki nagłówkowe powinny zawierać:
- definicje typów (klas)
- deklaracje globalnych i statycznych zmiennych
- definicje stałych
- deklaracje funkcji (metod)
- definicje funkcji inline
Definicje funkcji powinny być umieszczone w pliku o tej samej nazwie, ale z rozszerzeniem „c” lub „cpp”.
Przykład użycia pliku nagłówkowego
Przykładowe pliki:
#ifndef _RNM_HPP
#define _RNM_HPP
float Suma(float, float);
float Roznica(float, float);
#endif
Plik źródłowy:
float Suma(float x, float y) {
return (x + y);
}
float Roznica(float x, float y) {
return (x - y);
}
Plik główny programu:
#include "rnm.hpp"
#include
using namespace std;
int main() {
float a, b;
cin >> a;
cin >> b;
cout << a << " + " << b << " = " << Suma(a, b) << endl;
cout << a << " - " << b << " = " << Roznica(a, b) << endl;
return 0;
}
Zapobieganie wielokrotnemu dołączaniu plików
Do zapobiegania wielokrotnemu dołączaniu plików używa się dyrektyw preprocesora:
#ifndef _RNM_HPP
#define _RNM_HPP
...
#endif
Alternatywnie, niektóre kompilatory, takie jak Microsoft Visual C++, umożliwiają użycie #pragma once
, jednak ta instrukcja nie jest częścią standardu ISO C++.
Pliki nagłówkowe C w C++
W C++ standardowe pliki nagłówkowe z C mogą być dołączane na dwa sposoby:
#include
#include "cNAZWAPLIKU"
Na przykład, w C używa się #include
, a w C++ #include
.