シリアル コマンド インタープリターを構築しようとしているので、コマンドを配列に格納したいと考えています。コマンド名と入力した内容を比較して関数を呼び出せるように、各コマンドに名前と関数ポインターを持たせたいと考えています。私はCが得意ではないので、助けてください!これが私がこれまでに持っているものです。
コマンド配列は、構造体の配列になります。各構造体には、文字列と関数ポインターがあります。ここにエラーがありますが、修正方法がわかりません。これらはメインの前に行われます。
typedef struct cmdStruct {
char cmd[16];
void (*cmdFuncPtr)(void);
}CmdStruct;
void (*ledFuncPtr)(void);
void (*cmd2FuncPtr)(void);
// assign pointers to functions
ledFuncPtr = &LedFunction;
cmd2FuncPtr = &Cmd2Function;
//build array of structs
CmdStruct cmdStructArray[] = cmdStructArray = { {"led", ledFuncPtr },
{"cmd2", cmd2FuncPtr }, };
後で、構造体配列を調べて、受信したコマンドと比較します。
// go through the struct array to do string comparison on each struct's string member
for (int i = 0; i < sizeof(cmdStructArray); i++) {
// string comparison of received command and string of struct
if(strcmp(cmdStructArray[i].cmd, receivedCmd)==0) {
// dereference function pointer
(*cmdStructArray[i].cmdFuncPtr)(void);
}
}
どの部分が間違っているのか、どうすれば修正できますか?