Elem sada da dam svoj "pogled" na #pragma direktive (mada opet isticem da to nije kompletno objasnjenje #pragma direktiva!):
Pragma direktive se koriste NAJCESCE da kontrolisu akcije kompajlera u odredjenom delu programa ali tako da ne uticu na sam program u globalu. #pragma direktive stavljamo u C++ kod onde gde zelimo da one naprave neki "uticaj" da to tako nazovem :) . #pragma direktiva utice na aplikaciju od mesta poziva nadalje za vreme kompajliranja ILI dok se ne naidje na drugu #pragma direktivu - koja AUTOMATSKI menja status prethodne!
Sintaksa je kao sto znate:
Code:
#pragma pragma-string
#pragma pragma-string
pragma string moze da bude:
COPYRIGHT -- da specificirate kopirajt informaciju
COPYRIGHT_DATE -- da specificirate datum za prethodno opisanu informaciju o kopirajtu
hdr_stop -- kada se koristi kesiranje raznih header-a ova "komanda" se koristi da se naznaci KRAJ "prefix header" dela programa. U datom sors fajlu ovaj header ne moze da se resetuje!
HP_SHLIB_VERSION -- Da se kreira verzija rutine iz dinamicke biblioteka.
LOCALITY -- Da se nazove tzv. "code subspace"
OPTIMIZE -- Da se ukljuci ili iskljuci optimizacija
OPT_LEVEL -- Da se setuje odredjeni nivo optimizacije
pack -- da dozvoli da maksimalni "alignment" delova klase moze da ima i non-class tipove...
VERSIONID -- Da se specificira string koji predstavlja verziju...
Kako Ivan rece, #pragma sluzi za svasta - ovo sto sam ja u prethodnim redovima naveo je samo deo #pragma direktiva... Ja ne verujem da ljudi nesto mnogo koriste #pragma direktive (zato sam i reagovao onako na pocetku, jer se #pragma najvise koristi da se naglasi koji headeri se kesiraju a koji ne - najcesce...)
PONAVLJAM: #pragma utice samo na delove programa! Ili, utice od mesta gde se pozove, pa do kraja kompajliranja!
Evo primera
Code:
g++ -O2 prog.cc
------------8<-----(prog.cc)-------
#pragma OPTIMIZE OFF
void A(){ // Iskljuci optimizaciju
... // za ovu funkciju
}
#pragma OPTIMIZE ON
void B(){ // Vrati optimizaciju
... // na nivo 2.
}
------------>8------------
g++ -O2 prog.cc
------------8<-----(prog.cc)-------
#pragma OPTIMIZE OFF
void A(){ // Iskljuci optimizaciju
... // za ovu funkciju
}
#pragma OPTIMIZE ON
void B(){ // Vrati optimizaciju
... // na nivo 2.
}
------------>8------------
Huh, odo da popijem nesto, tj. ne nesto nego jedan Heineken iz friza...
Pozdrav svima, a najvise pozdrava mojoj METAL bratiji sirom sveta! ;)
Dejan Lekic
dejan ? metal.org.yu
http://www.1inux.org