我在與下面的代碼拋出的警告問題,希望你能幫助我:警告:數組下標是以上數組界限[-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