inputFunc.input1~4に処理a~cをsetに合わせて登録したいのですが
setInputFunc関数で引数func(inputFunc.input1~4)に処理a~cののアドレスがセットされると思ったのですが、セットされません。
何か問題あるでしょうか?
ちなみに
inputFunc.input1 = a;
とした場合正常に関数aのアドレスがセットされています。
static struct{ void (*input1)(int input); /* 入力1に対して設定されている処理 */ void (*input2)(int input); /* 入力2に対して設定されている処理 */ void (*input3)(int input); /* 入力3に対して設定されている処理 */ void (*input4)(int input); /* 入力4に対して設定されている処理 */ }inputFunc; /* 実行処理登録構造体 */ /* 実処理 */ static void a(int input){} static void b(int input){} static void c(int input){} /* 実行処理登録 */ static void setInputFunc(void (*func)(int), int set) { switch(set){ case 0: func = a; break; case 1: func = b; break; case 2: func = c; break; } } static void main(void) { setInputFunc(inputFunc.input1, 0); setInputFunc(inputFunc.input2, 1); setInputFunc(inputFunc.input3, 2); }
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/30 09:06