Delen via


Compilerfout C2603

'functie' : te veel statische objecten met blokbereik met constructor/destructors in functie

Opmerkingen

In versies van de Microsoft C++-compiler vóór Visual Studio 2015 of wanneer de optie /Zc:threadSafeInit- compiler is opgegeven, is er een limiet van 31 voor het aantal statische objecten dat u in een extern zichtbare inlinefunctie kunt hebben.

We raden u aan om dit probleem op te lossen door een recentere versie van de Microsoft C++-compilerhulpprogrammaset te gebruiken of, indien mogelijk, de optie /Zc:threadSafeInit- compiler te verwijderen. Als dit niet mogelijk is, kunt u overwegen om uw statische objecten te combineren. Als de objecten van hetzelfde type zijn, kunt u overwegen om één statische matrix van dat type te gebruiken en naar afzonderlijke leden te verwijzen zoals vereist.

Voorbeeld

Met de volgende code wordt C2603 gegenereerd en ziet u een manier om dit op te lossen:

// 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
}