See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Plik nagłówkowy - Wikipedia, wolna encyklopedia

Plik nagłówkowy

Z Wikipedii

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 po to, by nie trzeba było przy każdej najmniejszej zmianie w implementacji jednego modułu rekompilować 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 polecenia dołączenia pliku:

#include "NazwaPliku.hpp"

#include <cstdio>

przed rozpoczęciem kompilacji tekst plików nagłówkowych jest dołączany do tekstu programu w miejsce instrukcji #include.

Pierwsza wersja służy do dołączenia pliku znajdującego się w tym samym katalogu co program. Nazwa modułu w ostrych nawiasach oznacza, że znajduje się on w katalogu ze standardowymi plikami nagłówkowymi (dostarczonymi z kompilatorem).

Pliki nagłówkowe powinny zawierać:

  • deklaracje typów (klas)
  • deklaracje globalnych i statycznych zmiennych
  • definicje stałych
  • deklaracje funkcji
  • definicje funkcji inline

Definicje funkcji powinno umieszczać się w pliku o tej samej nazwie, co nagłówkowy, z rozszerzeniem "c"/"cpp".

Przykład użycia pliku nagłówkowego (w pierwszej linii podana jest nazwa pliku):

// rnm.hpp

#ifndef _rnm_hpp_
#define _rnm_hpp_

float Suma(float x,float y);
float Roznica(float x,float y);

#endif
// rnm.cpp

float Suma(float x,float y)
{
     return (x+y);
}
float Roznica(float x,float y)
{
     return (x-y);
}
#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 1;
}

Dyrektywy:

#ifndef _rnm_hpp_
#define _rnm_hpp_
  
    ...

#endif

zapobiegają próbie dołączenie tego samego pliku więcej niż jeden raz - kompilator sprawdza, czy została zdefiniowania etykieta (w tym przypadku "_rnm_hpp_"), jeżeli nie - zostaje ona zainicjowana, a treść modułu jest dołączana do programu - przy następnej próbie dołączenia tego pliku kompilator będzie już znał etykietę "_rnm_hpp_", ominie więc (nie dołączy) instrukcje mię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 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 zaawansowanych funkcji matematycznych.

Pliki nagłówkowe z C używane w programach C++

Zgodnie z ISO C++ pliki nagłówkowe o rozszerzeniu "c" w programach napisanych w C++ powinny być dołączane w następujący sposób:

#include <cNAZWAPLIKU>
#include "cNAZWAPLIKU"

gdzie NAZWAPLIKU jest nazwą bez rozszerzenia. Przykładowo, podczas gdy w C pisze się #include <stdio.h>, w C++ należy użyć zapisu #include <cstdio>.

Wikibooks
Zobacz podręcznik na Wikibooks: Programowanie:C - Biblioteki


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -