3

私はオープンソースプロジェクト(サーバー)で作業しており、基本的に開始時に、数百のアイテム属性を持つ大きなxmlアイテムデータベースをロードします。これらの属性をチェックするために大量のelse/ifを使用し、さらに約20を自由に追加しましたが、コンパイラーが壊れたようです。私は周りを検索しましたが、実際に実行可能なオプションを提供する答えはありませんでした。これを無効にできるかどうか疑問に思っています。#pragmaを使用してみました(他のいくつかの警告でこれを使用しているため) )。私はC++のこの部分についてあまり経験がないので、おそらく間違っています。

#pragma warning(disable:1061)

私が試したものですが、機能しませんでした。有効な警告ではないというエラーが表示されました。このエラーを無効にすることは可能ですか?

ありがとうございました。

//編集-解決策これを回避する方法を追加したかっただけです。128レベルの制限を超えないように、すべてのカスタム属性を入れる関数を作成することになりました。

bool isCustomAttribute(std::string strValue, int intValue, xmlNodePtr itemAttributesNode, ItemType& it)

そして私はelseifslolの配列に挿入しました、多分きれいではないかもしれませんが、それは素早く簡単な回避策でした。

4

1 に答える 1

3

これは致命的なコンパイラエラーであり、警告ではないため、このエラーを禁止することはできません。そのドキュメントには次のように書かれています。

コンパイラの制限:ブロックが深くネストされすぎている

コードブロックのネストは、128のネストレベルの制限を超えています。ネストを簡素化します。

これはコンパイラの制限ですが、128のネストレベルは、読みやすさと保守性の点で多すぎることに注意してください。そのコードをリファクタリングして、ネストの健全なレベル(たとえば、4レベル以下)に到達する必要があります。

于 2012-11-03T09:35:03.017 に答える