logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

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

st4chuu 19 Lut 2015 18:06 1140 7
REKLAMA
  • #1 14455930
    st4chuu
    Poziom 15  
    Posty: 228
    Pomógł: 2
    Ocena: 16
    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
  • REKLAMA
  • #2 14456078
    tadzik85
    Poziom 38  
    Posty: 3404
    Pomógł: 415
    Ocena: 16
    extern ...?

    Deklaracja w pliku h
    definicja w jednym z plików C
  • REKLAMA
  • #3 14456124
    st4chuu
    Poziom 15  
    Posty: 228
    Pomógł: 2
    Ocena: 16
    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
  • Pomocny post
    #4 14456131
    tadzik85
    Poziom 38  
    Posty: 3404
    Pomógł: 415
    Ocena: 16
    main.c :
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    xxx.c

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    zmienne h

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #5 14456359
    st4chuu
    Poziom 15  
    Posty: 228
    Pomógł: 2
    Ocena: 16
    dzięki! Poszło ;)

    jednak mam pytanie co zrobić z unią

    Kod: text
    Zaloguj się, aby zobaczyć kod


    W którym miejscu powinienem wstawić extern?
  • REKLAMA
  • #6 14456402
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Nie tak. W pliku .h najpierw zadeklaruj unię, a potem daną tego typu jako extern

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    A w jednym pliku C
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #7 14456432
    tadzik85
    Poziom 38  
    Posty: 3404
    Pomógł: 415
    Ocena: 16
    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ęć.
  • #8 14457649
    st4chuu
    Poziom 15  
    Posty: 228
    Pomógł: 2
    Ocena: 16
    Dzięki, już wszystko jasne.

Podsumowanie tematu

✨ W dyskusji poruszono problem współdzielenia zmiennych pomiędzy plikami .C w języku C. Użytkownik próbował zadeklarować zmienne w pliku nagłówkowym .h, co skutkowało błędem "multiple definition". Odpowiedzi sugerowały użycie słowa kluczowego `extern` w pliku nagłówkowym do deklaracji zmiennych oraz ich definicji w jednym z plików .C. Użytkownik z powodzeniem zastosował tę metodę, a następnie zapytał o sposób deklaracji unii. Odpowiedzi wyjaśniły, że unię należy najpierw zadeklarować w pliku .h, a następnie użyć `extern` dla instancji unii w tym pliku. Wyjaśniono również różnicę między deklaracją a definicją zmiennych.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA