Sdílet prostřednictvím


Chyba kompilátoru C2603

'function' : Příliš mnoho statických objektů oboru bloku s konstruktorem/destruktory ve funkci

Poznámky

Ve verzích kompilátoru Microsoft C++ před sadou Visual Studio 2015 nebo při zadání parametru /Zc:threadSafeInit- compiler existuje limit 31 pro počet statických objektů, které můžete mít v externě viditelné vložené funkci.

Pokud chcete tento problém vyřešit, doporučujeme použít novější verzi sady nástrojů kompilátoru Microsoft C++ nebo pokud je to možné, odebrat možnost kompilátoru /Zc:threadSafeInit- . Pokud to není možné, zvažte kombinování statických objektů. Pokud jsou objekty stejného typu, zvažte použití jednoho statického pole tohoto typu a odkazování na jednotlivé členy podle potřeby.

Příklad

Následující kód vygeneruje C2603 a ukazuje jeden způsob, jak ho opravit:

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