Czy jest uzywać keywarda static dla zmiennej w pliku źródłowym?

0

Witam
Jak mamy header i zadeklarujemy zmienną jako static to wtedy każdy plik .c który dziedziczy po tym headerze ma własną instancję tej zmiennej. Więc da się odczuć róznicę między zadeklarowaniem zmiennej jako static i nie używając static.

Co natomiast w przypadku plików źródłowych. Czy jest tam sens opatrywać zmienne słowem static jak nikt przecież nie robi includa po pliku źródłowym. Czy jest jakaś różnica?

Tutaj moje pytania są pod język C, bo wiadomo w C++ używa się klas chociaż często i w C++ można spotkać konstrukcje w których stałe nie są zadeklarowane w klasie a w pliku źródłowym na samej górze np.

constexpr float pi = 3.14f

//ctro klasy i metody
1

Jak dasz static w .cpp lub .c to nie dostaniesz się do zmiennej za pomocą extern z innego translation unit. Czyli po prostu blokuje extern.

dziedziczy po tym headerze

Lol
foo.c : public foo.h

0

Słowo kluczowe static ogranicza dla kompilatora miejsce wykorzystania funkcji/zmiennej dla pliku źródłowego w którym została zadeklarowana.
Czasem takie coś spotkać można jako pewien sposób hermetyzacji kodu pisanego w C.

0

przy czym w c++ od tego jest anonimowy namespace.

1 użytkowników online, w tym zalogowanych: 0, gości: 1