forループの実行中に問題が発生しました。定義済みの値を含む静的テーブルを作成しました。処理する関数にテーブルを引数として渡しました。 がbasicly私のコードは、次の1のようになります。forループがオペレーティングシステムで実行されていませんC
#define ID_01 0x0000
#define ID_02 0x0001
#define ID_03 0x0002
#define ID_04 0x0003
#define ID_05 0x0004
#define ID_06 0x0005
#define ID_07 0x0006
#define ID_08 0x0007
#define ID_09 0x0008
/*...
*/
#define ID_LAST 0xFFFF
static char table[]={
ID_01, ID_02 ,ID_03, ID_04, .... , ID_LAST}
void process(char *table){
int LastId=0;
char *Command;
for (Command=table; LastId==0 ; Command++){
switch(Command)
{
case ID_01:
do_stuff01();
break;
case ID_02:
do_stuff02();
break;
...
case ID_LAST:
LastId=1;
break;
default:
break;
}
}
}
私はデバッグにいくつかのメッセージを印刷しようとしたが、プログラムが印刷されたものも含め用と後輪の前のいずれかを実行しません。私はにループのための私を変更したとき
しかし:
for(i=0;i<10;i++)
すべてのメッセージが印刷されました。私は最初にやったのと同じように処理しなければなりません。
PS:このコード部分は、マイクロコントローラを実行しているオペレーティングシステムのタスクで実行され、私は初心者です。
私のループが実行されているが、表が++に動作していない、ループはそれは* *立ち往生によって何を意味している最初の定義された値 –
で立ち往生しています。デバッグしましたか?すべての可能なケースと 'default'ステートメントをカバーしましたか? – tilz0R
はい私はそれらのすべてをカバーし、デフォルト値を使用しました。私のプログラムはループ内の "* table"の最初の項目だけを実行します –