Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

deklaracja zmiennych w osobnym pliku współdzielenie między plikami .C

st4chuu 19 Lut 2015 18:06 690 7
  • #1 19 Lut 2015 18:06
    st4chuu
    Poziom 15  

    Witam czy jest możliwość zadeklarowania zmiennych tak aby były one współdzielone pomiędzy poszczególne pliki?

    Wrzuciłem zmienne do pliku nagłówkowego .h myślałem, że to zadziała. Niestety nie kompiluje się.
    W 2 plikach dodany jest ten sam plik nagłówkowy i wyskakuje komunikat
    "multiple definition of ...'" i tak z kilkoma zmiennymi

    czy można jakoś rozwiązać współdzielenie zmiennych pomiędzy plikami?

    Pozdrawiam

    0 7
  • #2 19 Lut 2015 18:41
    tadzik85
    Poziom 38  

    extern ...?

    Deklaracja w pliku h
    definicja w jednym z plików C

    1
  • #3 19 Lut 2015 18:50
    st4chuu
    Poziom 15  

    zrobiłem plik zmienne.h
    zadeklarowałem go w mainie
    przed wszystkimi zmiennymi dałem extern

    wyskakuje błąd, w jednym z plików, że zmienna jest pierwszy raz użyta i nie jest zadeklarowana

    0
  • Pomocny post
    #4 19 Lut 2015 18:51
    tadzik85
    Poziom 38  

    main.c :

    Kod: c
    Zaloguj się, aby zobaczyć kod



    xxx.c

    Kod: c
    Zaloguj się, aby zobaczyć kod



    zmienne h

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #5 19 Lut 2015 19:43
    st4chuu
    Poziom 15  

    dzięki! Poszło ;)

    jednak mam pytanie co zrobić z unią

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    W którym miejscu powinienem wstawić extern?

    0
  • #6 19 Lut 2015 19:49
    BlueDraco
    Specjalista - Mikrokontrolery

    Nie tak. W pliku .h najpierw zadeklaruj unię, a potem daną tego typu jako extern

    Kod: c
    Zaloguj się, aby zobaczyć kod
    A w jednym pliku C
    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #7 19 Lut 2015 19:54
    tadzik85
    Poziom 38  

    Dla rozjaśnienia ci.

    Extern jedynie deklaruje. oznacza to powiedzenie kompilatorowi ze taki twór istnieje.
    (nie jest rezerwowana pamięć dla takiego tworu).

    Definicja tworzy to coś -rezerwując dla niego to pamięć.

    0
  • #8 20 Lut 2015 07:46
    st4chuu
    Poziom 15  

    Dzięki, już wszystko jasne.

    0