User manual - アプリケーション作成上の注意点ver.1.00(2008年5月26日)
6
1-4.永久ループの使用
【内容】
ある特定の条件が発生しない限り、ループを抜けないようなロジックを組むと、ループから
抜け出せず、プログラムがストップした様に見えることがある。
【例】
key_fnc_mode(FNC_MODE_SET,FNC_2,&flg_id,&ptn);
while(1){
flg_sts(&dumy,&ptn,FL_FK_INT_ID);
if (ptn & FL_FK_INT_FNC1)
break;
}
(F1が押されるまでループするが、F1を通知モードにしていないと永久に抜けない)
【対策】
対策として、「永久ループ」の形を取らない組み方や、必ず成立しうる脱出条
件を設定する。
【対策例】
key_fnc_mode(FNC_MODE_SET, FNC_2, &flg_id, &ptn);
s_timeget(&tim_dat);
tim_dat.sec += 60;
while(1){
flg_sts(&dumy,&ptn,FL_FK_INT_ID);
if (ptn & FL_FK_INT_FNC1)
break;
s_timeget(&tim_dat2);
if (tim_dat.sec - tim_dat2.sec <= 60)
break; /* break at 60 seconds later */
}
(60秒後に脱出する制御を付加)