Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
"function" : För många statiska objekt med blockomfattning med konstruktor/destruktorer i funktionen
Anmärkningar
I versioner av Microsoft C++-kompilatorn före Visual Studio 2015, eller när kompileringsalternativet /Zc:threadSafeInit- anges, finns det en gräns på 31 för antalet statiska objekt som du kan ha i en externt synlig infogad funktion.
För att lösa det här problemet rekommenderar vi att du använder en nyare version av Microsoft C++-kompilatorverktygen, eller om möjligt tar du bort kompilatoralternativet /Zc:threadSafeInit- . Om detta inte är möjligt kan du överväga att kombinera dina statiska objekt. Om objekten är av samma typ bör du överväga att använda en enda statisk matris av den typen och referera till enskilda medlemmar efter behov.
Exempel
Följande kod genererar C2603 och visar ett sätt att åtgärda det:
// 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
}