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.

Atmega 32 - O co chodzi z extern

makipaki123 19 Kwi 2015 10:31 738 4
  • #1 19 Kwi 2015 10:31
    makipaki123
    Poziom 8  

    O co chodzi z extern, co on powoduje, czy to słowo powoduje, że zmienna jest wszędzie dostępna? Czyli np jak dam w pliku .h extern to gdy odwołam się w jakimś innym pliku nie dołączając tego pliku .h gdzie jest extern, to kompilator nie zgłosi błędu bo ma deklarację :?:

    Moderowany przez Mirek Z.:

    Pisownię postu poprawiłem, m.in. usunąłem kilka "pytajników".

    0 4
  • #2 19 Kwi 2015 10:39
    namok
    Poziom 25  

    Jeśli chodzi o c to jestem przedszkolakiem ale może to coś pomoże.

    0
  • #3 19 Kwi 2015 11:14
    michalko12
    Specjalista - Mikrokontrolery

    Extern informuje że zmienna jest zmienna globalną i występuje gdzieś w projekcie.

    Przykład:

    plik_a.c

    Kod: c
    Zaloguj się, aby zobaczyć kod



    plik_b.c
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Fizycznie deklaracja zmiennej występuje w plikb_a.c ale poprzez poinformowania kompilatora że jest ona gdzieś w projekcie możesz odwoływać się do niej z innego pliku.


    Inny sposób użycia:

    plik_a.c

    Kod: c
    Zaloguj się, aby zobaczyć kod


    plik_a.h
    Kod: c
    Zaloguj się, aby zobaczyć kod

    plik_b.c
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Zmienna będzie widoczna w każdym pliku w którym będzie dołączony plik plik_a.h

    Jeszcze inny przypadek:
    Żeby sobie nie zaśmiecać plików źródłowych np. gdy potrzebujesz dostępu do zmiennej tylko w jednej funkcji w innym pliku:
    plik_a.c

    Kod: c
    Zaloguj się, aby zobaczyć kod



    plik_b.c
    Kod: c
    Zaloguj się, aby zobaczyć kod


    W pliku plik_b.c dostęp do zmiennej będzie miała tylko funkcja void jakas_inna_funkcja(void)

    3
  • #4 19 Kwi 2015 14:44
    squelch
    Poziom 11  

    dzięki chyba to zrozumiałem

    Dodano po 15 [minuty]:

    Też miałem z tym problem ale wydaje mi się że działa to tak:
    kiedy kompilator napotka słowo extern to wtedy zacznie szukać definicje danej zmiennej i naprzykład załóżmy że zwiększe zmienną o jeden czyli wtedy zapamięta warość zmiennej i zwiększy.

    Ps.Napiszcie czy dobrae kumam ale jeszcze coś słyżałem że można jeszcze deklarować zmienne globalne czym taka deklaracja różni się od defnicji no bo w funkcjach to rozumiem ale przy zmiennych tego nie czaje :?: :?: :?: :?: :?:

    Moderowany przez Mirek Z.:

    Inny nick niż autora tematu - ale wszystko wskazuje na zdublowane konto. Blokada, do ewentualnego wyjaśnienia.

    0
  • #5 19 Kwi 2015 14:51
    tadzik85
    Poziom 38  

    W przypadku zmiennych extern oznacza deklarację, czyli mówisz kompilatorowi tylko tyle ze ta zmienna istnieje nie tworząc jej. Definicja czyli bez extern Tworzy tą zmienną.

    Podobnie jest z funkcjami ale tam extern ma trochę inne zastosowanie.

    Deklaracja - mówisz kompilatorowi jak dany twór wygląda.
    Definicja - kompilator stworzy ten twór.

    0