Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
"function" : zbyt wiele obiektów statycznych zakresu blokowego z konstruktorami/destruktorami w funkcji
Uwagi
W wersjach kompilatora Microsoft C++ przed programem Visual Studio 2015 lub po określeniu opcji kompilatora /Zc:threadSafeInit- istnieje limit 31 dla liczby obiektów statycznych, które można znaleźć w funkcji wbudowanej widocznej zewnętrznie.
Aby rozwiązać ten problem, zalecamy wdrożenie nowszej wersji zestawu narzędzi kompilatora Microsoft C++ lub, jeśli to możliwe, usuń opcję /Zc:threadSafeInit- kompilatora. Jeśli nie jest to możliwe, rozważ połączenie obiektów statycznych. Jeśli obiekty są tego samego typu, rozważ użycie pojedynczej statycznej tablicy tego typu i odwołaj się do poszczególnych elementów członkowskich zgodnie z potrzebami.
Przykład
Poniższy kod generuje kod C2603 i pokazuje jeden ze sposobów jego naprawy:
// C2603.cpp
// Compile by using: cl /W4 /c /Zc:threadSafeInit- C2603.cpp
struct C { C() {} };
extern inline void f1() {
static C C01, C02, C03, C04, C05, C06, C07, C08, C09, C10;
static C C11, C12, C13, C14, C15, C16, C17, C18, C19, C20;
static C C21, C22, C23, C24, C25, C26, C27, C28, C29, C30, C31;
static C C32; // C2603 Comment this line out to avoid error
}