我遇到以下代码抛出警告的问题,希望您能帮助我:
fprintf (fp, "%dd%d+%d ", pMobIndex->mana[DICE_NUMBER],
DICE_NUMBER
在我的头文件中定义为 0。
显然,0 不超过数组的大小。
数组定义为。
int mana[2];
我完全不知道为什么会这样做,因为 0 显然在数组的范围内。我一半的引擎代码现在抛出这些数组绑定错误,我有大约 30 个,但对我来说没有一个是有意义的。
这是make的输出:
gcc -O3 -s -Wall -c -o obj/olc_save.o olc_save.c
olc_save.c: In function 'save_mobile':
olc_save.c:234:13: warning: array subscript is above array bounds [-Warray-bounds]
fprintf (fp, "%dd%d+%d ", pMobIndex->mana[DICE_NUMBER],
^
它也会发生:
db1.c: In function 'create_mobile':
db1.c:2056:30: warning: array subscript is above array bounds [-Warray-bounds]
+ pMobIndex->mana[DICE_BONUS];
和
olc_act.c: In function 'medit_manadice':
olc_act.c:6500:15: warning: array subscript is above array bounds [-Warray-bounds]
pMob->mana[DICE_BONUS] = atoi (bonus);
我的头文件中的定义:
/* dice */
#define DICE_NUMBER 0
#define DICE_TYPE 1
#define DICE_BONUS 2
我知道DICE_BONUS
会(现在才意识到),但我一生都无法弄清楚为什么DICE_NUMBER
会这样。
哦。问题是那里的第三个整数输出fprintf
isDICE_BONUS
但它在另一行,我以为编译器警告我DICE_NUMBER
,它警告我关于 BONUS。