Niejeden początkujący programista C++ natknął się pewnie na prosty problem: jak zdefiniować zmienną, która będzie dostępna w całym programie? Sprawa nie jest oczywista z tego względu, że w języku tym nie występuje w ogóle pojęcie ‘projektu’; każdy moduł .cpp jest kompilowany osobno i dopiero linker składa je wszystkie w jeden plik wykonywalny. O tym jednak łatwo zapomnieć, jeśli używamy współczesnych środowisk programistycznych.
Warto więc wiedzieć, że w C++ tak naprawdę nie ma zmiennych globalnych. Symulują je zmienne łączone zewnętrznie – takie, które definiujemy w jednym module .cpp, a odwołujemy się do nich z innych modułów przy pomocy deklaracji zapowiadających extern
. Te muszą być oczywiście umieszczone we wspólnych plikach nagłówkowych.
Powyższy sposób jest jedynym na uzyskanie zmiennych dostępnych z wielu plików .cpp. Jeśli coś w nim pokręcimy, możemy otrzymać albo kod niekompilujący się (jeżeli nie dołączymy deklaracji extern
), ale – co gorsza – uruchamiający się, ale działający zupełnie inaczej (jeśli w headerze damy normalną definicje zmiennej, każdy dołączający go moduł otrzyma jej własną niezależną kopię).
Adding comments is disabled.
Comments are disabled.