警告をスローする次のコードに問題があり、あなたが助けてくれることを願っています:
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
。
ああ。問題は、そこにある 3 番目の整数出力がfprintf
別DICE_BONUS
の行にあることです。コンパイラが について警告していると思いましたがDICE_NUMBER
、BONUS について警告していました。