Cześć, mam taki problem: w jednym pliku .cpp deklaruję zmienną globalną i przypisuję jej wartość 1000. W innym pliku w konstruktorze pewnej klasy wykorzystuję tą zmienną globalną. Problem w tym, że w konstruktorze ta zmienna ma wartość 0 :/. Mam więc pytanie co może być tego powodem? Czy to jest normalne w C++? W żadnym innym pliku nie ruszam tej zmiennej więc dlaczego wynosi ona 0?
0
0
Aaaa, nie było pytania ;-)
2
Zmienne globalne to często zły design.
Zapewne zdefiniowałeś tą różne zmienne o tej samej nazwie (to UB, tak przy okazji), zamiast zadeklarować, że korzystasz z globalnej (extern int x
zamiast kolejnej definicji int x
). Linker nie ma obowiązku informowania o łamaniu zasady jednej definicji (ze względów wydajnościowych), więc informacji możesz nie dostawać.