Zmienne globalne w C++

2009-04-14 11:37

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ę).

Tags:
Author: Xion, posted under Programming »



Adding comments is disabled.

Comments are disabled.
 


© 2017 Karol Kuczmarski "Xion". Layout by Urszulka. Powered by WordPress with QuickLaTeX.com.