Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
survik1
Založen: 22. 08. 2007 Příspěvky: 107
|
Zaslal: 23. listopad 2007, 19:15:42 Předmět: redefinice |
|
|
Aj, tak a je čas začít s problémy v C++
Mám soubor a.cpp, soubor b.cpp a soubor def.h. V def.h definuji všechny základní globální proměnné (většinou grafické ukazatele), které se mají volat jak ze souboru a tak i b. Do obou souborů (a i b) includuji def.h. Problém je v tom, že se u druhého souboru pokouší kompilátor funkce redeklarovat a tak jediným možným východiskem je error. Pokusil jsem se to obejít pomocí
kód: |
#ifdef Global_prom
#define Global_prom
(...)
#endif
|
Ale pak soubor b.cpp samozřejmě ty proměnné ani nezná. Nevíte o nějakém řešení? |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 23. listopad 2007, 19:20:00 Předmět: |
|
|
extern se jmenuje tvoje reseni
promenne musis nadefinovat v jednom *.cpp - nejlepe globals.cpp - a do vsech ostatnich je uvodit (pomoci toho tveho def.f) jako extern typ promenna |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1050
|
Zaslal: 23. listopad 2007, 20:24:39 Předmět: |
|
|
rezno a to ho neupozornis ze pouzivat globalne premenne sa nema?? _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 23. listopad 2007, 20:45:19 Předmět: |
|
|
Tady je to celkem zbytečné, časem na to dojde. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
Tringi

Založen: 28. 07. 2007 Příspěvky: 290
|
Zaslal: 23. listopad 2007, 21:03:50 Předmět: |
|
|
Ono vůbec best practices jsou pro začátečníka spíše přítěží, když se učí na prográmcích typu Hello World. |
|
Návrat nahoru |
|
 |
survik1
Založen: 22. 08. 2007 Příspěvky: 107
|
Zaslal: 23. listopad 2007, 21:08:05 Předmět: |
|
|
a co třeba LoadImage(), kde potřebuji mít přístupný surface jak z main.cpp, tak z load.cpp  |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 23. listopad 2007, 21:14:47 Předmět: |
|
|
survik1 napsal: |
a co třeba LoadImage(), kde potřebuji mít přístupný surface jak z main.cpp, tak z load.cpp  |
me z tebe slahne - to nemuzes najit to extern v googlu?
globals.cpp
def.h
muj1.cpp
kód: |
#include "def.h"
printf("%d", i); |
muj2.cpp
kód: |
#include "def.h"
printf("%d", i+10); |
|
|
Návrat nahoru |
|
 |
survik1
Založen: 22. 08. 2007 Příspěvky: 107
|
Zaslal: 23. listopad 2007, 21:34:46 Předmět: |
|
|
to rezna:
Sry, jsem zapoměl, na koho to směřovat Já už to mám dávno zprovozněný (díky), já to psal jako ukázku nou a eosie, proč potřebuju globální proměnné  |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 23. listopad 2007, 22:06:13 Předmět: |
|
|
survik1 napsal: |
to rezna:
Sry, jsem zapoměl, na koho to směřovat Já už to mám dávno zprovozněný (díky), já to psal jako ukázku nou a eosie, proč potřebuju globální proměnné  |
ok - v tom pripade pro LoadImage nemuze ten surface brat jako parametr? |
|
Návrat nahoru |
|
 |
prost
Založen: 30. 07. 2007 Příspěvky: 109 Bydliště: cvut fel, stm
|
Zaslal: 23. listopad 2007, 22:25:02 Předmět: |
|
|
Tringi napsal: |
Ono vůbec best practices jsou pro začátečníka spíše přítěží. |
presne tak.
a vubec kdyz jde o uzivatele resp. hrace, tak ho veci jako globalni promenne a rekl bych i typ free licence (open a closed source) trapi ze vseho nejmin _________________ BbB |
|
Návrat nahoru |
|
 |
survik1
Založen: 22. 08. 2007 Příspěvky: 107
|
Zaslal: 23. listopad 2007, 22:26:03 Předmět: |
|
|
rezna napsal: |
survik1 napsal: |
to rezna:
Sry, jsem zapoměl, na koho to směřovat Já už to mám dávno zprovozněný (díky), já to psal jako ukázku nou a eosie, proč potřebuju globální proměnné  |
ok - v tom pripade pro LoadImage nemuze ten surface brat jako parametr? |
To jsem zkoušel, ale dělalo to tam nějaký čachry machry, tak jsem to vyřešil jednodušeji  |
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 23. listopad 2007, 23:29:26 Předmět: |
|
|
survik1 napsal: |
rezna napsal: |
survik1 napsal: |
to rezna:
Sry, jsem zapoměl, na koho to směřovat Já už to mám dávno zprovozněný (díky), já to psal jako ukázku nou a eosie, proč potřebuju globální proměnné  |
ok - v tom pripade pro LoadImage nemuze ten surface brat jako parametr? |
To jsem zkoušel, ale dělalo to tam nějaký čachry machry, tak jsem to vyřešil jednodušeji  |
v tom pripade ukaz kod - protoze to ti nemuze delat psi kusy  |
|
Návrat nahoru |
|
 |
ladik-BigBoss

Založen: 28. 07. 2007 Příspěvky: 162
|
Zaslal: 29. listopad 2007, 08:54:22 Předmět: |
|
|
prost napsal: |
Tringi napsal: |
Ono vůbec best practices jsou pro začátečníka spíše přítěží. |
presne tak.
a vubec kdyz jde o uzivatele resp. hrace, tak ho veci jako globalni promenne a rekl bych i typ free licence (open a closed source) trapi ze vseho nejmin |
to je sice pravda, ale treba jeden muj projekt na globalni promenne dojel... proste to nakonec bylo tak neprehledne a skryvalo to tolik chyb ze to kdekomu padalo. skoda ze to nepadalo me, jinak bych to aspon trochu odladil  |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 29. listopad 2007, 12:18:57 Předmět: |
|
|
Pred nejakym tim rokem sem udelal jednu ne-malou aplikaci v Ccku s globalnimi promennymi, ktery byly vsude v kodu pouzivany, a odbugovani mi trvalo priblizne stejne dlouho jako samotne naprogramovani! Toliko k pouzivani globalnich promennych. |
|
Návrat nahoru |
|
 |
wozembouch
Založen: 03. 09. 2007 Příspěvky: 31
|
Zaslal: 29. listopad 2007, 13:30:19 Předmět: |
|
|
Pouzivani globalni promenych (az na par vyjimek, kde se naopak velice hodi) se rovna sebevrazde , ale kazdy by si tim mel projit. Malemu diteti muzete zjevne pravdy troubit do hlavy stokrat, ale pokud si nenabije, tak neposlechne.
Jsem relativne cerstvy tatinek + takhle jsem samozrejmne taky programoval. |
|
Návrat nahoru |
|
 |
|