Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
'function' : Zu viele statische Blockbereichsobjekte mit Konstruktor/Destruktoren in Funktion
Bemerkungen
In Versionen des Microsoft C++-Compilers vor Visual Studio 2015 oder wenn die /Zc:threadSafeInit-Compileroption angegeben ist, gibt es einen Grenzwert von 31 für die Anzahl statischer Objekte, die Sie in einer extern sichtbaren Inlinefunktion haben können.
Um dieses Problem zu beheben, empfehlen wir, die neuere Version des Microsoft C++-Compilertoolsets zu übernehmen, oder entfernen Sie ggf. die Compileroption "/Zc:threadSafeInit-compiler". Wenn dies nicht möglich ist, können Sie die statischen Objekte kombinieren. Wenn die Objekte vom gleichen Typ sind, sollten Sie ein einzelnes statisches Array dieses Typs verwenden und bei Bedarf auf einzelne Member verweisen.
Beispiel
Der folgende Code generiert C2603 und zeigt eine Möglichkeit zum Beheben:
// 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
}