Podczas kompilowania i łączenia biblioteki lub programu C++ nie ma gwarancji co do kolejności inicjalizacji statycznych obiektów C++ wśród jednostek tłumaczeniowych. GCC offers init_priority
rozwiązać problem archiwów statycznych, udostępnionych obiektów i programów:Co to jest odpowiednik Microsoft opcji GCC init_priority?
init_priority (priorytet)
W standardowej C++, obiekty zdefiniowane w zakresie przestrzeni nazw są gwarantowane
być zainicjowane w kolejności ściśle zgodnej z ich zgodną z
definicji w danej jednostce tłumaczeniowej. Żadne gwarancje nie są udzielane dla inicjowania w jednostkach tłumaczeniowych. Jednak GNU C++ pozwala
użytkownikom kontrolę kolejność inicjalizacji obiektów zdefiniowanych w
zakresie przestrzeni nazw z atrybutu init_priority określając
względny priorytet, stała integralną wyrażenie aktualnie ograniczony
między 101 a 65535 włącznie. Niższe liczby oznaczają wyższy priorytet w postaci
.
(Archiwa statyczne wydają się być najtrudniejsze, ponieważ (prawdopodobnie) zostaną połączone przez kogoś innego).
Co oferuje Microsoft do kontrolowania kolejności inicjalizacji statycznych obiektów C++ wśród jednostek tłumaczeniowych?
Dzięki za odpowiedź. Nie zapomniałem o tobie. Po prostu nie miałem czasu, aby to przetestować (i zaakceptować, jeśli to działa). – jww