次の方法で共有


コンパイラ エラー 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
}