Megosztás a következőn keresztül:


C2603 fordítási hiba

"függvény" : Túl sok blokkhatókörű statikus objektum konstruktor/destruktorokkal a függvényben

Megjegyzések

A Microsoft C++ fordító Visual Studio 2015 előtti verzióiban, illetve a /Zc:threadSafeInit- fordító beállítás megadásakor a külsőleg látható beágyazott függvényekben elérhető statikus objektumok száma 31-es korlátot tartalmaz.

A probléma megoldásához javasoljuk, hogy a Microsoft C++ fordítóeszközkészlet újabb verzióját alkalmazza, vagy ha lehetséges, távolítsa el a /Zc:threadSafeInit- fordító lehetőséget. Ha ez nem lehetséges, fontolja meg a statikus objektumok kombinálását. Ha az objektumok azonos típusúak, fontolja meg egyetlen ilyen típusú statikus tömb használatát, és szükség szerint hivatkozzon az egyes tagokra.

példa

A következő kód létrehozza a C2603-at, és egy módszert mutat a javításra:

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