jfk
Guest
Wed Mar 17, 2004 4:44 pm
Witam
Od kilku dni próbuje cos napisac w Atmanie.
Program ten domyslnie tworzy wiele plikow .h i .c
glowny plik źródłowy z funkcja main() includuje wszystkie pliki nagłówkowe.
I tu mam problem. Gdzie i jak umiescic deklaracje zmiennych globalnych?
Chcialem umiescic wszystkie zmienne globalne w jednym pliku, ale poniewaz
musze wtedy ten plik includowac we wszystkich pozostałych, to linker wyrzuca
błędy o wielokrotnej definicji zmiennej.
Atman umieszcza caly plik naglowkowy w klamrze typu
#ifndef _PLIK_H_
#define _PLIK_H_
// tu deklaracje zmiennych
#endif
ale to chyba nic nie pomaga.
Czy ktos wie jak rozwiazac takie problemy?
Pozdrawiam
jfk
Andy
Guest
Wed Mar 17, 2004 5:36 pm
Użytkownik "jfk" <jotefka@poczta.fm> napisał w wiadomości
news:c39352$p4k$1@inews.gazeta.pl...
Quote:
...
Gdzie i jak umiescic deklaracje zmiennych globalnych?
Chcialem umiescic wszystkie zmienne globalne w jednym pliku, ale poniewaz
musze wtedy ten plik includowac we wszystkich pozostałych,
to linker wyrzuca
błędy o wielokrotnej definicji zmiennej.
...
zmienne globalne mozesz zdefiniowac ale w pliku .c
np. globals.c, powiedzmy:
int gLicznik;
a wpliku globals.h:
#ifndef _GLOBALS_H
#define _GLOBALS_H
extern int gLicznik;
#endif
i ten plik globals.h includujesz
do inych plikow c do tych., w ktorych
potrzebujesz widziec te zmienne globalne
--
Andrzej
jfk
Guest
Wed Mar 17, 2004 6:27 pm
Użytkownik "Andy" <anokWYTNIJ@ceti.pl> napisał w wiadomości
news:c3961j$cit$1@nemesis.news.tpi.pl...
Quote:
Użytkownik "jfk" <jotefka@poczta.fm> napisał w wiadomości
news:c39352$p4k$1@inews.gazeta.pl...
...
Gdzie i jak umiescic deklaracje zmiennych globalnych?
Chcialem umiescic wszystkie zmienne globalne w jednym pliku, ale
poniewaz
musze wtedy ten plik includowac we wszystkich pozostałych,
to linker wyrzuca
błędy o wielokrotnej definicji zmiennej.
...
zmienne globalne mozesz zdefiniowac ale w pliku .c
np. globals.c, powiedzmy:
int gLicznik;
a wpliku globals.h:
#ifndef _GLOBALS_H
#define _GLOBALS_H
extern int gLicznik;
#endif
i ten plik globals.h includujesz
do inych plikow c do tych., w ktorych
potrzebujesz widziec te zmienne globalne
--
Andrzej
Wielkie dzieki. Czy to dotyczy tylko C ? Dotychczas mialem do czynienia
glownie z VC++ i tam chyba nie bylo takich problemów.
Pozdrawiam
jfk
Andy
Guest
Wed Mar 17, 2004 7:26 pm
Użytkownik "jfk" <jotefka@poczta.fm> napisał w wiadomości news:c3996s$jks$1@inews.gazeta.pl...
Quote:
...
Wielkie dzieki. Czy to dotyczy tylko C ? Dotychczas mialem do czynienia
glownie z VC++ i tam chyba nie bylo takich problemów.
...
w C++ jest tak samo
nie mozesz zadeklarowac zmiennej w pliku h
i includowac go do dwoch roznych plikow c
bo w ten sposob masz zmienna o tej samej nazwie w dwoch roznych plikach c
a to powoduje, ze linker wyrzuca blad o zdublowanych symbolach
nie byloby problemu gdybys plik h includowal tylko w jednym pliku c
rowniez sytuacja taka nie wystapi jesli zmienna globalna bedzie typu static
wtedy jest ona globalna ale tylko w ramach jednego pliku.c
tylko nalezy pamietac, ze tak naprawde sa to rozne zmienne
znaczy zajmuja rozne komorki w pamieci
--
Andrzej
Jan Dubiec
Guest
Wed Mar 17, 2004 11:35 pm
On Wed, 17 Mar 2004 12:26:35 +0100, "Andy" <anokWYTNIJ@ceti.pl> wrote:
Quote:
Użytkownik "jfk" <jotefka@poczta.fm> napisał w wiadomości news:c3996s$jks$1@inews.gazeta.pl...
...
Wielkie dzieki. Czy to dotyczy tylko C ? Dotychczas mialem do czynienia
glownie z VC++ i tam chyba nie bylo takich problemów.
...
w C++ jest tak samo
nie mozesz zadeklarowac zmiennej w pliku h
i includowac go do dwoch roznych plikow c
bo w ten sposob masz zmienna o tej samej nazwie w dwoch roznych plikach c
Zadeklarować możesz, po to w zasadzie istnieją pliki nagłówkowe. Nie możesz jej
zdefiniować.
Regards,
/J.D.
--
Jan Dubiec, jdx@slackware.pl, mobile: +48 602 101787
Głęboka wiara wymaga płytkiego rozumu i nikłej wiedzy.
Andy
Guest
Thu Mar 18, 2004 12:56 am
Użytkownik "Jan Dubiec" <jdx@slackware.pl> napisał w wiadomości news:87fzc7jxl6.fsf@hs001.slackware.pl...
Quote:
...
Zadeklarować możesz, po to w zasadzie istnieją pliki nagłówkowe. Nie możesz jej
zdefiniować.
racja !
badzmy precyzyjni :-)
w h - deklaracje
w c - definicje
--
Andrzej