Lecția 21

Se afișează „Bună ziua, lume!“ La consola folosind cout. Cu toate acestea, acest program nu este cout definiție, atunci compilatorul stie ce cout? Faptul este că cout este declarat în fișierul antet, care se numește «iostream». Când vom scrie #include , vom face o cerere pentru toate conținutul fișierului antet cu numele «iostream» Copiere în dosar. Astfel, întregul conținut al «iostream» este disponibil pentru utilizare.

Lecția 21

Scrieți propriul fișier antet

Acum, să ne întoarcem la exemplul pe care am discutat în lecția precedentă. Am avut două fișiere: add.cpp și main.cpp.

(Dacă faci totul în conformitate cu noua, atunci nu uitați să adăugați add.cpp în proiectul dvs., astfel încât acesta a fost conectat la compilare).

Și aici este doar pentru a ne ajuta să vină la antet fișiere. Acesta va fi suficient pentru a scrie un fișier de antet, și poate fi utilizat în orice număr de programe, după caz. De asemenea, nu va avea nevoie de mult timp pentru a face modificări, dacă este cazul (de exemplu, adăugarea unui nou parametru).

Scrieți propriul fișier antet nu este atât de dificil cum ar părea la prima vedere. Fișierele antet constau din două părți.

Prima parte - paza antet. vom discuta acest lucru în următoarea lecție (despre preprocesor). gărzi de antet împiedica apelurile (# includ) fișier antet mai mult decât o dată cu același fișier.

Notă. atunci când conectați fișier (#include), toate conținutul său se introduce imediat după linia includ în fișierul curent.

Lecția 21

Dacă primiți o eroare de compilator care nu add.h găsit, asigurați-vă că numele fișierului exact add.h. Este posibil ca, atunci când creați un fișier, puteți sări sau nu pentru a specifica ceea ce doriți, de exemplu: o „add“ (fara extensie) sau «add.h.txt» sau «add.hpp».

Dacă primiți un agent de legătură eroare care ADD () nu este definit, asigurați-vă că ați conectat corect fișierul add.cpp în proiectul dumneavoastră, și este conectat la elaborarea, împreună cu alte fișiere!

paranteze unghiulare (<>) Vs ghilimele ( "")

Probabil că vrei să știi de ce folosim paranteze unghiulare pentru iostream și ghilimele duble pentru add.h. Faptul că, folosind paranteze unghiulare, ne spune compilatorului că fișierele antet plug-in care nu sunt scrise de noi (vine cu compilator), asa ca uite pentru acest fișier antet aveți nevoie în directoarele de sistem. ghilimele duble spune compilatorului că includem fișierul header pe care l-ați creat, deci trebuie să căutați-l în directorul curent, împreună cu sursa noastră. În cazul în care nu este acolo, atunci compilatorul va începe să verifice alte moduri, inclusiv directorul de sistem.

Regula. Utilizați paranteze unghiulare pentru a conecta fișierele antet care vin cu compilator. O ghilimelelor pentru orice altceva (fișiere pe care le-ați creat).

Regula. Fiecare fișier trebuie să #include Cpp necesare pentru a compila fișierele antet.

De ce iostream fără .h extensie?

O altă întrebare frecventă este: „De ce iostream (sau oricare alt dintre fișierele standard de antet bibliotecă) indică faptul că nu .h extensie»?. Ei bine, să vedem. Există două fișiere separate: iostream.h (antet) și doar iostream! Pentru a explica necesitatea de a scurta excursie în istorie.

Când C ++ tocmai a creat, toate fișierele sunt standard de bibliotecă runtime au fost încheie .h. Versiunea originală a cout și CIN trăit în iostream.h. În cazul în care limba a fost standardizat Comitetul ANSI, au decis să se mute toate funcțiile biblioteca runtime spațiul de nume Prostranstvo std (care, de altfel, a fost o idee bună). Cu toate acestea, a existat o problemă: dacă toate funcțiile muta la spațiul de nume std, programele vechi nu mai funcționează!

Pentru a ocoli această problemă și pentru a oferi compatibilitate inversă pentru programe mai vechi, a fost introdus un nou set de fișiere antet care utilizează același nume, dar fără .h extensie. Toate funcționalitatea a fost în spațiul de nume std. Astfel, vechiul program cu #include Nu aveți nevoie să fie rescrise, iar noi programe ar putea #include deja .

Când conectați fișierul antet din biblioteca standard, asigurați-vă că folosiți o versiune fără .h (dacă există). În caz contrar, veți fi utilizați o versiune învechită a titlului, care nu mai este acceptată.

Trebuie remarcat faptul că multe dintre titlurile din biblioteca standard sunt doar .h versiune. Pentru aceste fișiere este permis să se conecteze această versiune. Multe dintre aceste biblioteci sunt compatibile cu standardul de programare C și C nu are suport pentru spațiul de nume. Prin urmare, funcționalitatea acestor biblioteci nu vor fi disponibile prin intermediul spațiului de nume std. De asemenea, atunci când scrie propriile fișiere antet, trebuie să le alocați extensia .h, din moment ce nu va pune propriul cod în spațiul de nume std.

Regula. Utilizați versiunea bibliotecii fără .h (dacă există) și să obțină acces la funcții prin spațiul de nume std. În cazul în care versiunea fără .h nu există sau scrieți propriile antete, utilizați versiunea cu .h.

Conectarea fișierelor header din alte directoare

O altă problemă comună este legătura dintre fișierele header din alte foldere (directoare).

Bad fel - pentru a scrie calea relativă la fișierul pe care doriți să vă conectați, ca parte a liniilor #include. De exemplu:

Dezavantajul este o reflectare a structurii de directoare în codul. Dacă actualizați vreodată sau modifica structura codului se va opri de lucru.

O modalitate buna - de a spune compilator sau IDE, aveți o grămadă de fișiere antet într-un alt loc în care doriți să vedeți dacă compilatorul nu le găsesc în directorul curent. Se poate face la configurarea «includ calea» (pentru a conecta modul) sau «căutare director» (catalog de căutare) în IDE.

În Visual Studio, trebuie să faceți clic dreapta pe proiectul în soluție Explorer și selectați «Properties», apoi o filă «VC ++ Directoare». Vei vedea elementul «Include directoare». Adăugați la alte directoare.

Din Codul :: Blocks, mergeți la meniul Project și selectați «Build Options», apoi o filă «Căutare directoare». Adăugați cataloage.

Cu G ++, puteți utiliza opțiunea -I pentru a specifica o conexiune director alternativ:

g ++ o- principal -I / sursa / include main.cpp

Avantajul acestei abordări este că, dacă schimbați vreodată structura directoare, va trebui să modificați doar o singură setare în compilatorul sau IDE, în loc de a face modificări pentru fiecare fișier de cod.

Este posibil să scrie definiții de funcții în fișierul antet?

C ++ nu s-ar plânge dacă faci, dar, în general, această practică nu este acceptată.

După cum sa menționat mai sus, atunci când #include fișier, toate conținutul său se introduce imediat după liniile #include. Acest lucru înseamnă că orice definiții care sunt în fișierul antet, copiate fiecare fișier, în cazul în care acesta se va conecta.

Pentru proiectele mici, probabil nu va fi o mare problemă. Dar pentru mai mare, aceasta poate contribui la creșterea timpului de compilare (deoarece același cod este compilat de fiecare dată când are loc) și dimensiunea fișierului executabil. Dacă efectuați modificări la fișierul Cpp, numai acest fișier va trebui să fie recompilate. Dacă efectuați modificări la definiția în fișierul antet, fiecare fișier pe care #include acest antet, va trebui să recompilați. Din cauza o mică schimbare, va trebui să recompilați întregul proiect!

Uneori, excepțiile sunt făcute pentru funcții simple, care sunt puțin probabil să se schimbe (de exemplu, în cazul în care definiția unei funcții constă dintr-o singură linie).

Iată câteva sfaturi pentru a face propriile fișiere antet:

Conectați întotdeauna gărzile de antet.

Nu definiți funcții în fișierele header.

Sunați fișierele antet, numele fișierului sursă cu care acestea sunt asociate (de exemplu: grades.h funcționează cu grades.cpp).

Încercați să reducă la minimum numărul de alte anteturi ai #include. #include doar cel mai necesar.

Nu #include Cpp fișiere.

ARTICOLE TOP

  • Lecția 1: Introducere în programare
  • Ce limbaj de programare pentru a învăța mai întâi? Cum sa faci bani?
  • Top Bk public pentru programatori
  • Programatorului dicționar. Slang, care ar trebui să știe fiecare codificator
  • Ce ar trebui să fac după instalare pentru Windows? instala programe
  • Cum să învețe să atingă tipul de pe tastatură?
  • Contacte

articole similare