#include only once .... ?

#include only once .... ?

offline
  • Pridružio: 21 Okt 2005
  • Poruke: 65
  • Gde živiš: localhost

Moze li ko da pomogne , odose mi zivci ...

Do sada sam radio sa class-ama koje su bile deklarisane u recimo klasa.h a funkcije clanice klase recimo u klasa.cpp ... Dovoljno je bilo da se u klasa.h napise #ifndef KLASA_H #define KLASA_H i na kraju #endif i da sve bude ok. kasnije se u main.cpp includuje klasa.h i sve radi ok .

Medjutim sada imam jedan header gde su mi deklarisane promenljive i ove promenljive se koriste i u klasa.cpp i u main.cpp .... Znaci postoje sledeci fajlovi :

def.h
klasa.h
klasa.cpp
main.cpp

-def.h bi trebalo da se includuke i u main.cpp i u klasa.cpp . E ja to ne mogu da postignem ... obavezno dobijam error tipa "multiple definition of xxx" ....

Ima li ko neko resenje , ili da me uputi gde da trazim ....

Zagrljaj ovoliko bi mu bio zahvalan .



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 17 Mar 2004
  • Poruke: 293
  • Gde živiš: UK

U principu nije problem da taj def.h inkludujesh u koliko god hocesh fajlova (mada ima sluchajeva kad to nije jednostavno postici).
Glavno pitanje je shta ti se nalazi u tom fajlu i na shta se kompajler zhali? (recimo tu greshku cesh dobiti ako si u isto vreme deklarisao i implementirao funkciju u .h fajlu).

Ako ti bash treba "include once" mozhesh da koristish "#pragma once" u heder fajlu umesto standardnog include-guarda.



offline
  • meka  Male
  • Počasni građanin
  • Pridružio: 06 Avg 2003
  • Poruke: 811
  • Gde živiš: Novi Sad / Vojvodina

A možeš, recimo, da koristiš i extern xxx u svim fajlovima osim u jednom. Ako ovo praktikuješ, dobra stvar je da je extern u svim fajlovima osim u main.cpp.

bNasty, mislim da je problem sa deklarisanjem promenljive u .h fajlu. User, ako sam u pravu, extern rešava problem (meni bar).

offline
  • Pridružio: 21 Okt 2005
  • Poruke: 65
  • Gde živiš: localhost

Probacu ljudi ... evo bio sam odsutan pa nisam probao ova resenja ... u svakom sucaju hvala na odgovorima ...
Mozda da naglasim samo da radim sa Irrlicht engine-om i zelim da deklarisem sledece :

ISceneNode* node = 0; IrrlichtDevice* device = 0; IVideoDriver* driver = 0; ISceneManager* smgr = 0; IGUIEnvironment* guienv = 0;

i da se ove "promenljive" vide u ostalim "fajlovima" gde ih je potrebno prepoznati....

inace u pitanju je Windows/Dev-cpp a upravo instaliram VC++ express

Dopuna: 17 Nov 2007 3:53

@meka
Radi ovako kako si rekao.... hvala puno

@bNasty
U svakom slucaju hvala ti , jer prelistavajuci dokumentaciju za #pragma once skonto sam neke druge stvari ...

Do sledecih pitanja :-)

Ko je trenutno na forumu
 

Ukupno su 1835 korisnika na forumu :: 37 registrovanih, 3 sakrivenih i 1795 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: aleph_one, Asteker, Biokovo, bladesu, Bobrock1, Borkanović, bounty hunters, brundo65, CikaKURE, Citalac, comi_pfc, Dejan_vw, Deki Duga Devetka, draganl, g.nemanjaa91, IQ116, IvanMiletic, Leonov, Litostroton, m0nstrum_, MarkTven, Metanoja, Meteor1, Mićko, Panter, pedja savic, pein, Pururin, rikirubio, tritonus, uruk, Username1000, Vanderx, vladao75, Volfero, vrag81, 800077