Cpp fișiere header preprocesorul c

Include fișier este un fișier care conține definiții de funcții și variabile, precum și macro-uri, împreună cu unele fișiere originale. Pentru utilizarea în fișierele header program folosit preprocessor directivă „#include“.







De obicei, includ fișierele care se termină în „.h“ și pentru a evita utilizarea altor standarde.

Deoarece fișierele de utilizator și fișierele de sistem sunt incluse în programul utilizând directiva Preprocessor „#include“. Ea are trei versiuni:

Această modificare este utilizat pentru a conecta fișierele de sistem. Atunci când acesta este executat de căutare pentru fișier numit lista de fișiere de directoare specificate în prealabil, și apoi în directoarele de sistem implicit. Cu opțiunea „-I“ specifică directoare pentru a căuta includ fișiere. Opțiunea „-nostdinc“ în standardul interzice cataloagele sistemului de căutare și caută numai directoarele specificate.

Argumentul de fișier nu poate conține simbolul „>“, deși poate conține simbolul "<'.

Această modificare este utilizat pentru a include fișiere pentru programele de utilizator. Primul fișier este vizualizat în directorul curent, iar apoi pentru sistemul de fișiere includ director. Directorul curent este fișierul curent în curs de procesare. El poate fi văzut în primul rând, deoarece se presupune că există fișiere legate de fișierul curent în curs de procesare. (Dacă opțiunea „-I-“ este specificat, directorul curent.)

Argumentul de fișier nu poate conține caracterele „„“caractere. backslash-ul sunt tratate caractere separate, nu la începutul secvenței de evacuare. Astfel, directiva«#include «x \ n \\ y»»indică numele fișierului care conține trei caractere backslash.

Această modificare se numește „directiva #include calculat.“ Orice directivă „#include“, nu se potrivește cu niciuna dintre modificările descrise mai sus sunt calculate directivă. line ELSE ORICAT verificat pentru macro corespunzător, care înlocuiește apoi valoarea numelui său. Șirul rezultat ar trebui să aibă exact la fel ca una dintre modificările de mai sus (adică numele fișierului trebuie să fie inclus între ghilimele sau paranteze unghiulare).

Această caracteristică vă permite să definiți macro-uri, ceea ce face posibil să se schimbe numele fișierelor incluse. Această caracteristică, de exemplu, este utilizat pentru a transfera programele de la un sistem de operare la altul, ceea ce necesită un alt fișiere antet.

Directiva „#include“ indică faptul C preprocessor pentru a procesa fișierul specificat înainte de a procesa restul fișierului curent. Informațiile emise de preprocesor, conține deja datele, urmate de datele obținute în procesarea fișierului inclus, și pentru care, la rândul său, urmat de datele obținute în procesarea textului, ca urmare a directivelor „#include“. De exemplu, având în vedere următorul dop fișier „header.h“:

și programul principal cu numele „program.c“, folosind acest fișier.

Datele obținute în prelucrarea programului „program.c“ va fi după cum urmează:

Dopul poate cuprinde un început de fișier sau sfârșitul sisntaksicheskoy structura, cum ar fi funcția de definire.







Perioada în urma „#include“ directivă este întotdeauna goală și se adaugă preprocesorul C, chiar dacă pluginul în fișierul nu conține caracterul NEWLINE de încheiere.

Se întâmplă adesea ca un fișier să includă include un alt fișier. Acest lucru poate duce la faptul că un fișier separat, va fi conectat mai mult decât o dată, ceea ce poate duce la erori în cazul în care fișierul definește tipurile de structuri și definiții de tip. Prin urmare, ar trebui să evite conectarea mai multor fișiere.

De obicei, acest lucru se face de către deținuți în întregul conținut al fișierului, după cum se arată mai jos:

macro „FILE_FOO_SEEN“ indică faptul că un fișier este deja Comisiei, și o zi. Fișierele macro utilizator conectat nu ar trebui să înceapă cu caracterul „_“. Sistemul conectați numele fișierului nu trebuie să înceapă cu „__“ pentru a evita conflictele cu programe de utilizator. Oricare ar fi numele de fișier al fișierului macro trebuie să conțină numele și un text suplimentar pentru a se evita conflictele cu alte voznknoveniya includ fișiere.

GNU C Preprocessor este construit în așa fel încât procesarea fișierului inclus, acesta verifică disponibilitatea anumitor modele și cele mai eficiente le procesează. Preprocessor constată în mod specific atașarea dosarului complet într-o stare „#ifndef“. În cazul în care includ fișierul conține o „#include“ directivă, indicând fișierul procesat, sau macro din directivă „#ifndef“ a fost deja determinată, fișierul procesat este complet ignorat.

Există, de asemenea, o directivă specială, preprocesor că dosarul ar trebui să fie inclus mai mult de o dată. Această directivă se numește „#pragma o dată“. Acesta a fost utilizat în plus față de „#ifndef“ directivă și este acum depreciat și nu trebuie să prmenyaetsya.

Într-un limbaj orientat-obiect C, există o modificare „#include“ directivă, numită „#import“, care este folosit pentru a vkyucheniya fișier de mai multe ori. Atunci când se utilizează directiva „#import“ în loc de „#include“ nu are nevoie de o viteză convențională pentru a preveni prelucrarea fișierelor multiple.

„Moștenirea“ este ceea ce se întâmplă atunci când un fișier sau obiect sau formează o parte din conținutul său prin copierea virtuală dintr-un alt obiect sau fișier. În cazul în legătură cu moștenirea fișierelor înseamnă că un fișier conține un alt fișier, apoi înlocuiește sau adaugă ceva.

În cazul în care plug-in fișier și moștenește fișierul principal antet au nume diferite, o astfel de moștenire se numește directă. Acesta folosește un design „#include«BASE»,“ în fișierul derivat.

Uneori este necesar să fi moștenit și fișierul principal antet a avut același nume.

De exemplu, să presupunem că aplicația utilizează sistemul de fișiere includ „sys / signal.h“, dar versiunea fișierului „/usr/include/sys/signal.h“ pe acest sistem realizează ceea ce este necesar în cerere. Acesta va fi mai convenabil pentru a defini versiunea locală, eventual cu numele „/usr/local/include/sys/signal.h“ pentru a înlocui sau adăuga la versiunea livrate împreună cu sistemul.

Acest lucru se poate realiza prin utilizarea „-I.“ Opțiunea atunci când compilarea și crearea fișierului „sys / signal.h“, care îndeplinește funcțiile de program necesare. Dar pentru a face acest fișier include fișierul standard „sys / signal.h“ nu este atât de ușor. În cazul în care linia #include“ „În acest fișier se va conecta la noua versiune a fișierului, mai degrabă decât versiunea standard a sistemului. Acest lucru va conduce la o eroare de recursivitate atunci când compilarea.

Dacă utilizați directiva #include ` „Fișierul dorit este găsit, dar această metodă nu este EFICIENȚĂ deoarece conține calea completă la sistemul de fișiere. Acest lucru poate afecta conținutul sistemului, deoarece aceasta înseamnă că orice modificări locațiile fișierelor de sistem necesită modificări suplimentare în altă parte.

O soluție mai eficientă la această problemă este aplicarea „#include_next“ directivă, care este folosit pentru a conecta un fișier cu același nume. Această directivă funcționează și ca „#include“ directivă, cu excepția căuta fișierul dorit. Ea începe să caute o listă de directoare, fișiere incluse după directorul în care a fost găsit fișierul curent.

opțiunea Presupunem că '-I / usr / local / include' a fost specificat, precum și o listă de directoare pentru a căuta include '/ usr / include'. De asemenea, presupunem că ambele directoare conțin un fișier numit „sys / signal.h“. Directiva „#include „Găsiți fișierul dorit sub directorul“ / usr / local / include“. Dacă fișierul conține șirul „#include_next „Atunci căutarea va fi reluată după directorul anterior și fișierul va fi găsit în directorul“ / usr / include“.