使用C ++在VS中查找缺少分号的最有效方法是什么?

时间:2010-05-15 04:58:33

标签: c++ visual-studio-2008

找到导致错误的缺少分号的最佳策略是什么?是否有可能有用的自动化工具。

我目前正在使用Visual Studio 2008,但是针对任何环境的一般策略都会很有趣并且更有用。

背景:
目前,我在C ++程序中有一个特别难以捉摸的缺失分号(或括号)导致C2143错误。我的头文件依赖性相当简单,但我似乎无法找到问题。而不是发布我的代码并玩Where Wally(或Waldo,取决于你来自哪里),我认为获得一些可以在这种和类似情况下应用的好策略会更有用。

作为一个侧面问题:C2143错误显示在.cpp文件的第一个方法声明的第一行(即方法的返回类型)中,该文件仅包含其关联的.h文件。除了分号或大括号之外的任何东西会导致这种行为吗?

3 个答案:

答案 0 :(得分:5)

您是否在标题中的类定义后忘记了分号?这是cpp文件中第一个方法出错的一个相当常见的原因。我不认为有一个普通的魔法“找到丢失的分号”工具; VS试图做出有根据的猜测,但如果它没有了,那是因为你写的代码在没有它的情况下有些合法,即使它不是你想要的

答案 1 :(得分:3)

从编译器告诉您错误的行开始,然后查看该行之前的代码。

答案 2 :(得分:1)

除了(正如@Michael建议的)从课程结束时,它不太可能是一个缺失的分号。通常,缺少分号会导致一两行内的错误。

如果它是一个范围支撑,那么它通常不会太远,虽然有时它们可​​能还有很长的路要走。

从错误行回溯(向后向上移动代码,然后向后通过每个包含来自底部),检查大括号。有可能是在错误网站之前的cpp文件的开头,或最后一个包含的结尾,所以这是最好的起点。

您可以使用各种技巧:

  • 只需阅读代码即可。如果你遵循一个干净的对称编码风格,一个缺失的支撑通常会打你的脸。 (如果代码格式不一致,您可以使用Edit-> Advanced-> Format Document来整理代码。)

  • 将光标放在示波器的每一端}并按ctrl +}将光标移动到匹配的大括号。这将不执行任何操作,在这种情况下没有匹配,或者会跳转到匹配,您可以检查它是否是正确的括号。

  • 如果你需要考虑很多代码,只需用#if FALSE评论很多代码。您将获得不同的编译器错误,但如果原始错误仍然存​​在,则表明它不是由注释代码引起的,您可以转到下一个include / class / block。

  • 最糟糕的情况是它是宏中的一些代码。如果您在最后一天添加/编辑/使用过任何宏,请检查优先