代码之家  ›  专栏  ›  技术社区  ›  David Mason

在VS中用C++找到丢失分号最有效的方法是什么?

  •  3
  • David Mason  · 技术社区  · 16 年前

    找到导致错误的分号的最佳策略是什么?有没有自动化的工具可能会有所帮助。

    背景:
    目前,我在C++程序中有一个特别难以理解的丢失分号(或括号),这导致了C2143错误。我的头文件依赖关系非常简单,但是我仍然找不到问题所在。我不想发布我的代码,玩Where'swally(或者Waldo,取决于你来自哪里),我认为获得一些可以应用于这种情况和类似情况的好策略会更有用。

    作为一个附带问题:C2143错误出现在.cpp文件中第一个方法声明(即方法的返回类型)的第一行,该文件只包含其关联的.h文件。除了分号或大括号之外,还有什么会导致这种行为吗?

    3 回复  |  直到 7 年前
        1
  •  1
  •   Jason Williams    16 年前

    它不太可能是一个缺少的分号,除非(正如@Michael所建议的)是从一个类的末尾开始的。通常,缺少分号会导致一两行中出现错误。

    如果它是一个范围支架,那么它通常不会太远,尽管有时它们可能会很远。。

    从错误行回溯(向上返回代码,然后从底部返回每个include),检查大括号。很可能是在您的cpp文件的开头,就在出错的站点之前,或者在最后一个include的末尾,所以这是最好的开始位置。

    您可以使用各种技术:

    • 只要读懂密码。如果你遵循一个干净的对称编码风格,一个缺少的括号经常会扇你耳光(您可以使用“编辑”->高级->格式化文档以整理不一致样式的代码)。

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

    • .

        2
  •  5
  •   Michael Mrozek    16 年前

    你忘了标题中类定义后面的分号了吗?这是cpp文件中第一个方法出现错误的常见原因。我不认为有一个通用的魔术“找到丢失的分号”工具;VS试图做出一个有根据的猜测,但如果它关闭了,那是因为你写的代码没有它多少是合法的,即使它不是你想要的

        3
  •  3
  •   R Samuel Klatchko    16 年前