当代码为long时,方法的Curly括号不匹配

时间:2014-02-05 09:24:48

标签: c++ gedit geany

我有一个带有多个嵌套“if语句”的C ++方法,它们包含在方法的大括号中。当使用Gedit的匹配大括号时,我正在检查以确保所有大括号都正确匹配。

问题:Gedit说我最后两个大括号是“超出范围”! 我使用Geany检查了相同的代码,它显示了我所有花括号的正确匹配。

但是,在编译时,方法开头定义的方法的局部变量在方法中的某些后面写入的嵌套“if语句”中未被识别。大括号之间包含的行代码是否有限制?或者,是否存在导致此问题的嵌套“if和else if语句”的限制?

3 个答案:

答案 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

似乎搜索匹配的字符数确实存在限制。