다음을 통해 공유


컴파일러 오류 C2603

'function': 함수에서 생성자/소멸자가 있는 블록 범위 정적 개체가 너무 많습니다.

Visual Studio 2015 이전의 Microsoft C++ 컴파일러 버전에서 또는 /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
}