3

我正在使用一个开源项目(服务器),基本上在启动时它会加载一个带有数百个项目属性的大型 xml 项目数据库。它使用大量的 else/ifs 来检查这些属性,我冒昧地添加了大约 20 个,现在看来我已经破坏了编译器。我四处搜索,我找到的答案都没有给我一个可行的选择,所以我只是想知道你是否可以禁用它,我试过使用#pragma(因为他们自己在其他一些警告中使用它)。我对这部分 C++ 没有太多经验,所以我可能做错了。

#pragma warning(disable:1061)

是我尝试过的,没有工作给了我和错误,它不是一个有效的警告。是否可以禁用此错误?

谢谢你。

//Edit - 解决方案只是想添加我是如何解决这个问题的。我最终创建了一个函数,将所有自定义属性放入其中,这样我就不会超过 128 级限制。

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

然后我插入到 else ifs 的数组中,虽然可能不太漂亮,但这是一个快速而简单的解决方法。

4

1 回答 1

3

您不能禁止此错误,因为它是致命的编译器错误,而不是警告。它的文档说:

编译器限制:块嵌套太深

代码块的嵌套超过了 128 个嵌套级别的限制。简化嵌套。

这是编译器的限制,但请注意,就可读性和可维护性而言,128 个嵌套级别太多了。您应该重构该代码以达到更合理的嵌套级别(例如,四级或更少)。

于 2012-11-03T09:35:03.017 回答