Cum directiva #include - informatică, programare

3.3. Cum directiva „#include“

„#include“ directivă specifică preprocesorul trata C spus

înainte de a procesa restul fișierului curent. Informațiile furnizate de

Preprocessor, conține deja datele, urmate de date,

care rezultă î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 „program.c“ programul va arata

macro. Orice fragment C program poate fi inclus în alte

fișier. Fișierul inclus poate conține chiar și la începutul expresiei,

care se termină în fișierul sursă sau la sfârșitul expresiei, la începutul căruia

Acesta este situat în fișierul sursă. Deși Comentariu și constante șir nu pot

TO CONNECT fișier și să continue în fișierul sursă. nu a fost finalizată

duce la apariția unei erori la sfârșitul fișierului.

Plug-in de fișier poate conține un început sau sfârșit sisntaksicheskoy

structură, cum ar fi funcția de definire.

Perioada în urma „#include“ directivă este întotdeauna goală și

se adaugă la preprocesorul C, chiar dacă fișierul plug-in nu conține

caracter de terminare a NEWLINE.

3.4. După ce a inclus fișiere

Se întâmplă adesea ca un fișier să includă include un alt fișier. acest

Aceasta poate duce la faptul că un fișier separat, va fi conectat în mod repetat,

ceea ce poate duce la erori în cazul în care fișierul definește tipurile

Structuri și definiții de tip. Prin urmare, ar trebui să evite mai multe

Acest lucru se realizează de obicei prin intrarea în starea întregului conținut

acest fișier, după cum se arată mai jos:

macro „FILE_FOO_SEEN“ indică faptul că un fișier este deja Comisiei, și o zi.

Conectat fișierele de utilizator macro nu ar trebui să înceapă cu

'_'. Sistemul include numele fișierelor nu trebuie să înceapă cu o

„__“ pentru a evita conflictele cu programe de utilizator. cum

Nu contează numele de fișier al macro trebuie să conțină numele fișierului, iar unele

text suplimentar pentru a se evita conflictele cu alte voznknoveniya

GNU C preprocessor este construit în așa fel încât procesarea plug-in

fișier verifică pentru anumite modele și cel mai rațional

Acesta le procesează. Preprocessor constată în mod specific atașarea dosarului complet în

condiție '#ifndef'. În cazul în care directiva „#include“ este conținută în fișierul includ,

indicând fișierul procesat, sau macro din directivă „#ifndef“ are

definit, fișierul procesat este complet ignorat.

Există, de asemenea, o directivă specială, preprocesor care

fișierul 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 directiva „#ifndef“ și

este acum depreciat și nu ar trebui să prmenyaetsya.

Într-un limbaj orientat-obiect C, există o modificare a Directivei

„#include“, numit „#import“, care este folosit pentru vkyucheniya fișier

nu mai mult de o dată. Atunci când se utilizează „#import“ în loc Directiva

„#include“ nu are nevoie de o viteză convențională pentru prevenirea

fișier de procesare multiple.

3.5. Include fișiere, și moștenirea

„Moștenirea“ este ceea ce se întâmplă atunci când un obiect sau

fișier formează o parte din conținutul său prin virtuale

copierea dintr-un alt obiect sau fișier. Când este conectat la fișierul

moștenire înseamnă că un fișier include un alt fișier, apoi înlocuiește

sau adăuga nimic.

Dacă ați moștenit un fișier includ și include fișierul sunt principalele

nume diferite, se numește moștenire directă. În acest caz,

constructii second-hand „#include«BASE»,“ în fișierul derivat.

Uneori este necesar să fi moștenit și fișierul antet principal

Avem același nume.

De exemplu, să presupunem că aplicația utilizează sistemul

include fișierul „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 versiunile,

livrat cu sistemul.

Acest lucru se poate realiza prin utilizarea „-I.“ Opțiunea compila ș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

atât de simplu. În cazul în care linia #include“ „În acest fișier

se va conecta 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 efektivnost ca

Acesta conține calea completă la sistemul de fișiere. Acest lucru poate afecta conținutul

sistem, deoarece aceasta înseamnă că orice modificări la amplasarea sistemului

fișiere necesită modificări suplimentare în altă parte.

O soluție mai eficientă la această problemă este utilizarea directivelor

„#include_next“, care este folosit pentru a conecta următorul fișier

același nume. Această directivă, de asemenea, să funcționeze ca un „#include“ directivă

cu excepția căutarea pentru fișierul dorit. Ea începe să caute lista de directoare

antet fișiere după directorul în care a fost găsit fișierul curent.

Să presupunem că a fost specificată opțiunea „-I / usr / local / include“, și lista

directoare pentru a căuta include '/ usr / include'. De asemenea, să presupunem că ambele

director conține un fișier numit „sys / signal.h“. directivă

„#include „Găsiți fișierul dorit sub directorul

'/ Usr / local / include'. Dacă fișierul conține un șir de caractere

„#include_next “, Atunci căutarea va fi reluată după precedentul

directorul și fișierul va fi găsit în „/ usr / include“ director.