下面是我的程序中的头文件。 我得到一个编译错误,说我在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中注释第30行//包partyPack,编译/启动调试(失败),取消注释同一行并重试,它运行正好。
更新3 在学习了Pack()编译指示后,我用Pack取代了Pack,但问题依然存在。
正如其他人提到的,它似乎有干扰党的定义的东西,但我找不到它是什么。
使用两个编辑器,让你的IDE没有意识到它需要重新保存一个文件可能会导致... – 2013-04-25 23:52:47
这是所谓的Heisenbug的一个化身:-) – paxdiablo 2013-04-25 23:54:03
@paxdiablo Heh。因为它似乎与我试图修复这个弹出的另一个错误有关。这很难说出我的真实故障在哪里。 – 2013-04-25 23:55:25