我在与下面的代码抛出的警告问题,希望你能帮助我:警告:数组下标是以上数组界限[-Warray界]
fprintf (fp, "%dd%d+%d ", pMobIndex->mana[DICE_NUMBER],
DICE_NUMBER被定义我的头文件为0.
显然,0不会超过数组的大小。
该数组被定义为。
int mana[2];
我完全不知道为什么会这样做,因为0显然在数组的范围内。我的一半引擎代码现在抛出这些数组绑定的错误,我已经得到了大约30个,而NONE对我来说是有意义的。
下面是使输出:
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是。
D'oh。问题是fprintf
上的第三个整数输出是DICE_BONUS,但在另一行上,我认为编译器警告我关于DICE_NUMBER,它警告我关于BONUS。
[SSCCE](http://sscce.org),或者它没有发生。 – jrok
你确定警告是因为显示的代码? –
更新到您自己的问题plz,而不是评论。 – billz