Ошибка компилятора C2603
"function": слишком много статических объектов области блоков с конструкторами или деструкторами в функции
В версиях компилятора Microsoft C++ до Visual Studio 2015 или при указании параметра компилятора /Zc:threadSafeInit- имеется ограничение 31 на количество статических объектов, которые можно использовать во внешней встроенной функции.
Чтобы устранить эту проблему, рекомендуется использовать более последнюю версию набора инструментов компилятора Microsoft C++ или, если это возможно, удалите параметр компилятора /Zc:threadSafeInit- компилятора. Если это невозможно, рассмотрите возможность объединения статических объектов. Если объекты имеют одинаковый тип, рассмотрите возможность использования одного статического массива этого типа и ссылки на отдельные члены по мере необходимости.
Пример
Следующий код создает C2603 и показывает один из способов ее устранения:
// 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
}