C/C++ Preprocessor

poruka: 5
|
čitano: 2.365
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
C/C++ Preprocessor

Poštovane kolege,

 

Zanima me Vaše mišljenje oko preprocessorskih naredbi. Konkretno u slučaju da imam jedno zaglavlje koje koristim u više .cpp fajlova. Da li uštedim išta, ako unutar zaglavlja gdje su mi definicije struktura, f-ja i #include-ovi klasa koje koristim u tom projektu stavim u #ifndef #endif blok? Nemam baš nešto puno vremena da tražim po knjigama, ali me znatiželja vuče da pitam Vas. :)

 

Primjer toga o čemu pričam imate ovdje:

http://dl.dropbox.com/u/26792111/Programiranje/VezanaLista%28c%2B%2B%29.rar

 
0 0 hvala 0
15 godina
offline
C/C++ Preprocessor

To #ifndef ti znaci samo da predprocesor prije kompajliranja provjeri da li si to definirao prilikom proslog kompajliranja,tj. da mu to nije prvo kompajliranje tog zaglavlja i ako jesi onda on preskoci ponovno kompajliranje tog zaglavlja, što znači da uštediš vrijeme prilikom ponovnog kompajliranja, pogotovo ako koristiš velike datoteke zaglavlja...

 

ifndef - ti znaci IF NOT DEFINED - što znači ako nije definirano
npr.
#ifndef ZAGLAVLJE
#define ZAGLAVLJE

//neki kod tu

#endif

prvi put kada dodje na ispitivanje #ifndef, zadani uslov mu neće biti definiran i on će ući u blok. Unutar bloka imas naredbu #define gdje će se definirati u predprocesoru ZAGLAVLJE i uz to će se cjeli kod kompajlirati, tj poslati kompajleru. I sad kada sljedeci put odes na compile predprocesor ce opet provjeriti da li je definirano ZAGLAVLJE i ovaj put će preskočiti slanje tog koda kompajleru jer taj dio koda je vec kompajliran...

Poruka je uređivana zadnji put uto 14.6.2011 15:18 (slobo14).
Moj PC  
1 0 hvala 1
14 godina
neaktivan
offline
Re: C/C++ Preprocessor

Hvala, pretpostavljao sam da je tako. :) Nisam radio na ničemu prevelikom tako da nisam primjetio razlike sa i bez #ifndef -a na svojim projektima za faks. 

15 godina
neaktivan
offline
Re: C/C++ Preprocessor
slobo14 kaže...

To #ifndef ti znaci samo da predprocesor prije kompajliranja provjeri da li si to definirao prilikom proslog kompajliranja,tj. da mu to nije prvo kompajliranje tog zaglavlja i ako jesi onda on preskoci ponovno kompajliranje tog zaglavlja, što znači da uštediš vrijeme prilikom ponovnog kompajliranja, pogotovo ako koristiš velike datoteke zaglavlja...

Ne radi se tu bas o stednji na vremenu, za to sluzi precompiled header. Ovo o cemu se tu radi je tzv. include guard koji sprijecava problem visestrukog definiranja istih klasa/struktura/funkcija koji nastaje kod visestrukih includeanja nekog headera...

So then I typed GOTO 500 - and here I am!
14 godina
neaktivan
offline
Re: C/C++ Preprocessor

Vidiš, na ovo sam nailazio prije negdje, pročitao i nažalost, zaboravio. Šta ti je reć poluraspad znanja. Hvala na podsjetniku! :)

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice