C 错误跟踪意外令牌

C++ error tracking unexpected token

本文关键字:令牌 意外 跟踪 错误      更新时间:2023-10-16

经过一些重构并更改C 类后,发生了错误。奇怪的是,该错误没有位于我的.cpp文件中,而是在外部包含文件(OpenSceneGraph)中,该文件迄今为止工作正常。

在OSG/对象文件中,有以下枚举

enum DataVariance
{
    DYNAMIC,
    STATIC,
    UNSPECIFIED
};

导致语法错误。当我将 STATIC更改为 STATIc时,一切都很好地编译了。

错误c2059:语法错误:'static'

错误c3805:'typ':意外令牌,预期'}'或','

我没有更改OpensCeneGraph中的内容,只使用OpenSceneGraph重构了类中的某些代码,突然出现了错误。整个编译器输出都讨论了外部代码中的错误。

如何从编译器输出中提取自己的代码中的实际故障点?我认为这只是愚蠢的事情,但我不知道在哪里寻找错误。

(我不能仅更改OpenSceneGraph的代码)

很可能这是与预处理器问题相撞的名称。这就是为什么在大写中持续不断的旧习惯会造成当今的问题而不是修复它们的原因。要解决此问题,请在包括:

之前删除宏定义。
#ifdef STATIC
#undef STATIC
#endif
#include <header_with_problem>

在另一侧,不确定此宏可能会在其他地方造成问题,然后您需要找到其具有什么值并在包含后还原它。(或在可能的情况下将其包含在最后一个)

解决方案就像我预期的那样愚蠢:

我使用Clang-Format根据指南将代码格式化。Clang-Format工具更改了包含文件顺序(按字母顺序,设置此属性的人)。"次要"更改打破了我的代码。

提示:我使用预处理器解决问题:

#if 0
// excluded code
#endif

#if 1
// included code
#endif

这使我可以排除编码ep。如果汇编仍然失败,将是代码其余部分的问题。所以我发现,问题被隐藏在某些包含文件中。

之后,我使用svn diff比较了。