Pliki nagłówkowe – przy kompilatorze języka C i pochodnych (C++ itp.) pliki źródłowe o rozszerzeniu „h” (w C++ powinno się dla odróżnienia stosować „hpp”, ale w praktyce najczęściej spotykane jest nadal rozszerzenie „h”) zawierające opis interfejsu modułu: deklaracje zmiennych, funkcji, klas i innych struktur danych. Używa się ich ze względu na to, by nie było potrzeby, przy każdej nawet najmniejszej zmianie w implementacji jednego modułu, rekompilowania wszystkich innych odwołujących się do niego. W nowszych językach, takich jak Java czy C#, nie ma już potrzeby stosowania plików nagłówkowych.
Po wydaniu preprocesorowi poleceń dołączenia plików nagłówkowych np.: #include "NazwaPliku.hpp" #include <cstdio> przed rozpoczęciem kompilacji tekst tych plików jest wstawiany do tekstu programu w miejsce instrukcji #include. Pierwsza jej postać służy do dołączenia pliku nagłówkowego znajdującego się w tym samym katalogu co program. Nazwa modułu umieszczona w ostrych nawiasach oznacza, że znajduje się on w katalogu ze standardowymi plikami nagłówkowymi (dostarczonymi wraz z kompilatorem).
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 (metod) powinno umieszczać się w pliku o tej samej nazwie, co plik nagłówkowy, lecz z rozszerzeniem „c” lub „cpp”.
Przykład użycia
Plik rnm.hpp zawiera: #ifndef _RNM_HPP
#define _RNM_HPP float Suma(float,float); float Roznica(float,float);
#endif Plik rnm.cpp:
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 <iostream>
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; }
Poniższe dyrektywy zapobiegają próbie dołączenie tego samego pliku więcej niż jeden raz: #ifndef _RNM_HPP #define _RNM_HPP ... #endif preprocesor sprawdza, czy została już zdefiniowania etykieta _RNM_HPP, jeżeli nie, to zostaje ona zainicjowana i treść całego modułu jest dołączana do programu – przy następnej próbie dołączenia tego pliku preprocesor będzie znał etykietę _RNM_HPP, więc ominie (nie dołączy) instrukcje pomiędzy #ifndef _RNM_HPP a #endif.
W przypadku niektórych kompilatorów C++ (np. Microsoft Visual C++) instrukcja #pragma once może być użyta do zapobiegania wielokrotnego dołączania pliku – nie wchodzi ona jednak w skład ISO C++ i jest odradzana.
Niektóre pliki nagłówkowe, głównie dotyczące modułów standardowych, są bezpośrednio dostarczone z kompilatorem i umożliwiają łatwe posługiwanie się podstawowymi funkcjami takimi jak obsługa urządzeń wejścia/wyjścia czy bardziej zaawansowane funkcje matematycznne.
Pliki nagłówkowe z C używane w programach C++ Zgodnie z ISO C++, standardowe pliki nagłówkowe o rozszerzeniu „h”, w programach napisanych w C++, mogą być dołączane na dwa możliwe sposoby: #include <cNAZWAPLIKU> #include "cNAZWAPLIKU" gdzie NAZWAPLIKU jest nazwą bez rozszerzenia – przykładowo, podczas gdy w C używa się #include <stdio.h>, w C++ należy użyć zapisu #include <cstdio>.
Kategoria:Programowanie komputerów
fr:Bibliothèque standard de C#Les en-têtes de la bibliothèque C ISO