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