RTV forum PL | NewsGroups PL

Gdzie umieścić deklaracje zmiennych globalnych w AtmanAvr z AVR-GCC?

AVR-GCC i AtmanAvr

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Gdzie umieścić deklaracje zmiennych globalnych w AtmanAvr z AVR-GCC?

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

elektroda NewsGroups Forum Index - Elektronika Polska - Gdzie umieścić deklaracje zmiennych globalnych w AtmanAvr z AVR-GCC?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map