我被要求完成其他人开始的某些代码,而且我完全困惑于如何在结构体中复制U32值。这些是各种结构的相关部分;注意,我修了很多,因为那些都是一些严重的巨大结构:尝试从结构体中检索U32时程序崩溃
typedef struct AttackerList {
U32 count;
} AttackerList;
typedef struct AggroVars {
AttackerList attackerList;
}
typedef struct Player {
U32 aiAttackers;
}
现在,在功能我想修改:
void attackTarget(Player* target) {
AggroVars* aiTarget;
// Tons of code here.
aiTarget->attackerList.count++;
target->aiAttackers = aiTarget->attackerList.count;
// Tons more code here.
}
最后一行是导致我的人各种悲伤。它确实有效,我可以在调试输出中看到有多少生物正在攻击播放器;但是只要AI失去对目标的兴趣,它就会导致崩溃。我知道这与指针有关,但在代码上加星号会导致“无效间接”或“间接级别不同”。我几乎不知道如何检索aiTarget-> attackerList.count的值,而没有任何怪异的指针。
“对码**洒星号**”是*不*有效的调试技术! –
在没有相关代码的情况下调试指针的问题非常困难!你知道,_working example_的东西...(顺便说一句,如果你的函数有**两吨代码**,太久无法发布......我会重构一点点...) –
检查变量'target'或'aiTarget'在访问该值之前为NULL。这可能会帮助你得到答案。 – Srini