La crearea unui compilator C sau C ++ au fost rezolvate două probleme. În primul rând, ea a dezvoltat compilator. În al doilea rând, se creează o bibliotecă de funcții. Deoarece Borland biblioteca conține o mulțime de funcții, nu există nici o îndoială că crearea sa a necesitat un efort serios pe programator. (Simpla descriere a acestor funcții durează câteva sute de pagini!) Orice C sau C ++ Programul se bazează pe aceste caracteristici atunci când efectuează sarcini multiple. Având în vedere un astfel de rol fundamental al bibliotecii pentru punerea în aplicare a programelor este important să se familiarizeze cu descrierea funcționării sale. În special, este necesar să se înțeleagă activitatea de constructor, pentru a înțelege ce bibliotecile sunt diferite de fișierele obiect și care este rolul de fișiere antet. Aceste aspecte sunt discutate mai jos.
Linker-ul (Linker)
Poza 1
int count;
afișare void extern (void);
int main (void)
count = 10;
afișaj ();
return 0;
>
Poza 2
#include
int count extern;
afișare void (void)
printf (, conta "");
>
De asemenea, linker-ul „rapoarte“ un fișier, în cazul în care este funcția de afișare, astfel încât să poată fi numit.
Fișierele de bibliotecă în comparație cu fișiere obiect
Deși biblioteca si uita-te la fișierele obiect între ele există o diferență semnificativă: atunci când accesați biblioteca pentru tot codul se adaugă la program, disponibil în bibliotecă. Atunci când linker-ul se ocupă de program, format din mai multe fișiere obiect, cod podea TION fiecărui fișier obiect devine o parte din rezultate programe executabile noi. Acest lucru se întâmplă indiferent dacă efectiv utilizate acest cod. Cu alte cuvinte, structura în formarea unui program reunește toate fișierele obiect-Nye. Cu fișierele de bibliotecă nu este cazul.
Biblioteca este o colecție de funcții. Spre deosebire de fișierele obiect din fișierul Bibliei brary conține numele fiecărei funcții, funcțiile de cod obiect și informații, ka-sayuschayasya „transferabilitate“ fișierele necesare pentru a edita conexiuni. Atunci când un program face referire la funcția conținută în bibliotecă, linker-ul caută pentru această funcție și adaugă codul programului. Astfel, programul adaugă numai acele funcții care vor fi utilizate efectiv în ea.
Deoarece funcțiile stocate în bibliotecă, codul executabil al programului se va folosi numai într-adevăr, în funcție de program. (În cazul în care acestea au fost o parte din fișierele obiect-TION, programul ar fi fost mai mult de câteva sute de kilobytes!)
fișiere antet
Multe funcții de bibliotecă lucra cu tipurile lor de date specifice și structurile la care programul ar trebui să aibă acces. Aceste structuri și tipuri sunt definite în fișierele antet furnizate împreună cu compilator, și ei (fișierele header) care urmează să fie incluse (cu #include la putere), în fiecare fișier care utilizează funcțiile la care se referă. În plus, toate funcțiile de bibliotecă sunt prototipuri definite în fișierul antet. Acest lucru se face din două motive. În primul rând, în (funcțiile C ++ trebuie să aibă toate prototipuri. În al doilea rând, deși prototipurilor C nu este obligatorie, utilizarea lor rector, dar recomandată, deoarece acesta oferă mijloace pentru o tipuri de control mai atent. Inclusiv o C fișiere antet program care corespund funcții standard tsiyam-programe pot detecta potențiale erori intruneasca tipuri., de exemplu, încorporarea string.h (fișier antet pentru a fi utilizat cu rândurile de funcții de procesare) în codul de suflare nizhesle pentru a avea ca rezultat atunci când compilarea etc. avertismente legate de:
#include
s1 char [20] = "Bună";
char s2 [] = "acolo.";
int main (void)
int p;
p = strcat (s1, s2);
return 0;
>
Deoarece strcat () în fișierul antet este declarat ca revenirea un pointer la un char, compilatorul poate fi înregistrată ca o misiune de eroare potențială integralei-lennoy valori p variabile ale acestui indice.
Este necesar să ne amintim că, deși cu includerea multora punct de vedere tehnic nu este antete obligatorii (dar recomandat), acestea ar trebui să fie incluse în toate C ++ - programul. În secțiunile ulterioare, ghiduri în descrierea fiecărei funcții se va face referire la antetul.
Câteva dintre fișierele header cele mai comune sunt listate în tabel. Fișierele de masă marcate sunt definite de standardul ANSI C și C ++ limbajul folosit.
Tabel: Cele mai frecvent utilizate fișiere antet
Funcții de alocare dinamică a memoriei