Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
'function' : Demasiados objetos estáticos de âmbito de bloco com construtores/destruidores em função
Observações
Em versões do compilador Microsoft C++ anteriores ao Visual Studio 2015, ou quando a opção de compilador /Zc:threadSafeInit- é especificada, há um limite de 31 no número de objetos estáticos que você pode ter em uma função embutida visível externamente.
Para resolver esse problema, recomendamos que você adote a versão mais recente do conjunto de ferramentas do compilador Microsoft C++ ou, se possível, remova a opção de compilador /Zc:threadSafeInit-. Se isso não for possível, considere combinar seus objetos estáticos. Se os objetos forem do mesmo tipo, considere o uso de uma única matriz estática desse tipo e faça referência a membros individuais conforme necessário.
Exemplo
O código a seguir gera C2603 e mostra uma maneira de corrigi-lo:
// 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
}