共用方式為


編譯器錯誤 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
}