我被要求完成其他人開始的某些代碼,而且我完全困惑於如何在結構體中複製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