#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 1082 korisnika na forumu :: 34 registrovanih, 3 sakrivenih i 1045 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: 357magnum, Apok, asdfjklc, Avalon015, Bluper, bojankrstc, bokisha253, branko7, Bubimir, darios, Denaya, dule10savic, ILGromovnik, Koridor, Kubovac, Lucije Kvint, madza, mačković, Metanoja, micoboj, Milos ZA, Misirac, nebkv, Neutral-M, Panter, rikirubio, rodoljub, sap, SlaKoj, Stanlio, Stoilkovic, zdrebac, 1107, 2001