Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Słowo kluczowe extern

Ostatnio zmodyfikowano 2015-05-25 17:55
Autor Wiadomość
Huxyf
Temat założony przez niniejszego użytkownika
Słowo kluczowe extern
» 2015-05-25 15:59:32
Witam,
Dzisiaj zacząłem czytać Symfonie C++ i natrafiłem na opis owego słowa kluczowego extern. Pomimo krótkiego opisu nadal nie rozumiem do czego służy to extern, ponieważ gdy chcąc wypróbować działanie tego słowa wpisałem:
C/C++
#include <iostream>

using namespace std;

int main()
{
    a;
    b;
    extern int a, b;
}

to i tak otrzymałem log zwrotny z informacją iż, zmienne a i b nie zostały definiowane.
P-132742
pekfos
» 2015-05-25 16:24:25
to i tak otrzymałem log zwrotny z informacją iż, zmienne a i b nie zostały definiowane.
No bo nie zostały zdefiniowane. Chcesz ich 'użyć' przed linią z extern, więc ten kod niczego nie dowodzi. Powinieneś raczej wstawić linię z extern przed użycie tych zmiennych i najlepiej faktycznie coś z tymi zmiennymi zrób (przypisz zero, cokolwiek), by kompilator tego nie przepuścił z statement has no effect. Może efekt ci coś podpowie.
P-132743
Huxyf
Temat założony przez niniejszego użytkownika
» 2015-05-25 17:16:07
To skoro mam tego extern'a wstawić przed operacjami na zmiennych a i b, to czym się w takim razie różni ten
extern int a, b;
 od zwykłego definiowania
int a, b;
?
P-132752
pekfos
» 2015-05-25 17:32:50
extern oznacza deklarację zmiennej, a nie jej definicję. Próba skompilowania tego programu zakończy się błędem, bo jest użycie niezdefiniowanej, ale za to zadeklarowanej, zmiennej. Możesz więc jej używać, ale gdzieś się musi pojawić jej definicja. Przydatne, gdy chcesz mieć globalną zmienną w pliku nagłówkowym.
P-132753
wilkoo13
» 2015-05-25 17:37:49
W tym przypadku masz rację, extern jest tutaj po grzyba i się nie różni niczym. Ale jeśli do dyspozycji masz 2 pliki i chcesz aby zmienna z jednego pliku mogła być użyta w drugim pliku, należy użyć extern aby tą zmienną załączyć do pliku na którym operujemy. I to chyba jedyna przydatna funkcja tego słowa.
P-132754
Huxyf
Temat założony przez niniejszego użytkownika
» 2015-05-25 17:50:12
A teraz rozumiem. Czyli extern jest przeznaczony tylko i wyłącznie do wczytywania zmiennej z innego pliku np. gdy kod programu jest podzielony na kilka bądź kilkadziesiąt plików. W pojedynczych plikach nie jest on stosowany, ponieważ nie miało by to sensu.
P-132755
pekfos
» 2015-05-25 17:55:27
Czyli extern jest przeznaczony tylko i wyłącznie do wczytywania zmiennej z innego pliku
Do deklarowania zmiennej.. Tak samo jak deklarujesz funkcję, ma to sens nawet w jednym pliku. Tylko w przypadku zmiennych to nie jest przydatne za bardzo.
P-132756
« 1 »
  Strona 1 z 1