#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 :

  1. ISceneNode* node = 0;
  2. IrrlichtDevice* device = 0;
  3. IVideoDriver* driver = 0;
  4. ISceneManager* smgr = 0;
  5. 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 936 korisnika na forumu :: 50 registrovanih, 4 sakrivenih i 882 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., acatomic, ajo baba, ALEXV, amaterSRB, arezina, Asparagus, avijacija, bbogdan, belov, bestguarder, blatruc82, Bobrock1, bolimejoli, BORUTUS, coaaco, cojapop, Dovla, Dovla 1980, draganl, dusan.l, Dzigy, Feller, filip1326, Georgius, goran.vvv, jodzula, Kaplar2, kreker, ljuba.b, menk, mercedesamg, metallac777, nenaddz, NNPD, nobutado, Parker, Prašinar, prikolica, Razvigor.SRB, Saša1989, sistem22, sluga, Vanderx, Veselimalisa, vidra1, wizzardone, Zrcalo, šakalakazu, 79693