[ leka @ 20.01.2002. 17:26 ] @
... moram priznati da nekada ne razumem neke ljude. :) Ne moze covek uvek da se 100% posveti onome sto pise, kesiranje je jedna od najglavnijih stvari za sta je #pragma koristi... Ja nisam rekao da se #pragma koristi samo za to. Ako sam rekao onda je to moja greska koja se takodje da objasniti - ja ne sedim ovde i cekam da odgovaram ljudima na pitanja. :) Odogovorim na brzaka uvek. 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 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------------ 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 |