2015-08-08 19 views
5

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?

Odpowiedz

3

#pragma init_seg jest prawdopodobnie najbardziej podobnym udokumentowanym odpowiednikiem.

+0

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