繁体   English   中英

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

[英]What is the most efficient way to find missing semicolons in VS with C++?

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

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

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

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

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

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

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

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

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

您可以使用各种技术:

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

  • 将光标放在示波器的每一端}并按ctrl +}将光标移动到匹配的括号。 这将无效,在这种情况下没有匹配,或将跳转到匹配,你可以检查它是正确的大括号。

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

  • 最糟糕的情况是它是宏中的一些代码。 如果您已经添加/编辑/使用任何宏中的最后一天,那么检查它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM