我有一个带有多个嵌套“if语句”的C ++方法,它们包含在方法的大括号中。当使用Gedit的匹配大括号时,我正在检查以确保所有大括号都正确匹配。
问题:Gedit说我最后两个大括号是“超出范围”! 我使用Geany检查了相同的代码,它显示了我所有花括号的正确匹配。
但是,在编译时,方法开头定义的方法的局部变量在方法中的某些后面写入的嵌套“if语句”中未被识别。大括号之间包含的行代码是否有限制?或者,是否存在导致此问题的嵌套“if和else if语句”的限制?
答案 0 :(得分:1)
花括号之间是否包含行号的限制?
仅可用磁盘空间和内存。
或者,是否存在导致此问题的嵌套“if和else if语句”的限制?
同上。
显然你错了你的大括号匹配。如果你有一个很长的方法,你无法确定,重构它。
答案 1 :(得分:1)
显然有限制,因为编译器必须跟踪 记忆中的一切,记忆是有限的。我其实 g ++出现内存不足错误(机器生成 码)。达到限制应该导致编译时间 然而,错误。
实际上,对于手写代码,您可以考虑那里
对现代机器没有限制。你通常不应该
一个函数中超过十或十五行(尽管如此)
有例外),你不应该超过约
两个级别。当然,其中一个可能有更多行的情况
被证明是if
/ else if
的长序列
在if
/ else if
的情况下,编译器会看到更多级别的嵌套
比你做的。但我仍然希望有一个现代编译器
一台处理几百if
/ else if
的现代机器
没问题。
答案 2 :(得分:0)
此问题已在此处讨论: http://ubuntuforums.org/showthread.php?t=1175657
似乎搜索匹配的字符数确实存在限制。