gpt4 book ai didi

c++ - 注释/调试/取消注释/调试消失的编译错误

转载 作者:搜寻专家 更新时间:2023-10-31 01:49:41 25 4
gpt4 key购买 nike

下面是我程序中的一个头文件。我收到一个编译错误,说我在 partyPack 之前缺少一个分号。没有遗漏。还有另外两个错误,但我不记得它们是什么。

真正让我困惑的是我注释掉了 Pack partyPack;已编译(失败,因为它在 .cpp 中被引用),当我取消注释并再次尝试时,它编译并运行。

什么会导致这种行为?

#ifndef PARTY_INTERFACE
#define PARTY_INTERFACE

#include "utility.h"
#include "Pack.h"
#include "Shop.h"
#include "Assets.h"

struct member
{...};

class Party
{
private:
const static int TEAMSIZE = 4;
member team[TEAMSIZE];
Pack partyPack;
const Inventory* itemList;
public:
Party(const Inventory* inputList);
void newTeam();
bool load();
bool save();
void findItem();
const void showParty();
const void showInventory();
void addToInventory();
~Party(void);
};

#endif

更新 1我已经能够复制错误......下面是一个 github 存储库的链接,其中包含程序的文件供引用,可以随意下载和调试等。最后一次提交是在 VC++ 2010 中为我编译的。我已经注释掉了需要 windows.h 的部分,它 应该普遍编译......我希望。

https://github.com/dsball/RPGShop/tree/master/RPGShop

更新 2我已将问题隔离为任何时候在 Party.h 或 Party.h 本身中包含的头文件之一中发生某些更改。输入 int a 的简单操作;并立即删除它(这两个步骤之间没有任何内容)会导致错误。错误如下:

错误 1 ​​错误 C2146:语法错误:缺少“;”在标识符 'partyPack' party.h 30 之前

错误 2 错误 C4430:缺少类型说明符 - 假定为 int。注意:C++不支持default-int party.h 30

错误 3 错误 C4430:缺少类型说明符 - 假定为 int。注意:C++不支持default-int party.h 30

然后我在 Pack.h//Pack partyPack 中注释第 30 行,编译/开始调试(失败),取消注释同一行并重试,它运行得很好。

更新 3在得知有 Pack() 编译指示后,我用 Backpack 替换了 Pack,但问题仍然存在。

正如其他人所提到的,似乎确实有一些东西干扰了派对的定义,但我找不到它是什么。

最佳答案

(在以后的版本中,pack 已重命名为 backpack。此答案使用“backpack”代替“pack”)

在 G++ 下编译时(经过适当修改以删除特定于 Windows 的代码后),出现此错误:

$ g++ -std=c++0x *.cpp
In file included from Shop.h:6:0,
from Backpack.h:5,
from Backpack.cpp:1:
Party.h:30:2: error: ‘Backpack’ does not name a type

看起来问题在于 Backpack.h 包含了 party.h,但在 Backpack.h 的第 5 行,Backpack 类尚未定义。 Party.h 在其第 5 行中包含 Backpack.h,但由于 Backpack.h 已被包含,#ifndef 语句可防止 Backpack.h 被第二次包含(否则会创建 #include 语句的无限循环)。

总之,这个问题看起来是由于循环依赖引起的。我会找到一种方法来打破 Backpack.h 和 Party.h 之间的依赖循环。

至于为什么这是不稳定的,我猜测 VC 缓存完全加载的 header 作为优化。如果 Backpack.h 已完全加载,则不会发生此错误。

关于c++ - 注释/调试/取消注释/调试消失的编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com