6

私は学習中の同僚に、関数ポインターの使用方法と、関数ポインターの配列を取得する方法を実演していました。彼がインデックス付きディスパッチを実行できるように、次のコードを書き留めました。

typedef void (*VoidFunction)();
VoidFunction functions[]  =
    {editProgramName,
     editProgramLength,
     editProgramCycles,
     editProgramNumberOfSets,
     editProgramEditSets,
     editProgramSave,
     editProgramCancel};
// now dispatch                    
functions[scroll.arrayFocusIndex]();

そして、彼は尋ねました...「typedefなしでどうすればいいですか?」うまくいきそうなことをいろいろ試してみたところ、手がかりがありませんでした。私が見つけたすべての Google ヒットは、常に typedef を使用しているように見えました。関数ポインタの typedef なしでインラインで行う方法はありますか?

4

2 に答える 2

4
void (*functions[])() =
    {editProgramName,
     editProgramLength,
     editProgramCycles,
     editProgramNumberOfSets,
     editProgramEditSets,
     editProgramSave,
     editProgramCancel};
// now dispatch
functions[scroll.arrayFocusIndex]();
于 2012-12-06T23:21:20.720 に答える
3

これは私のために働いています:

void a()
{
}

void b()
{
}

void (*functions[2])();

int main()
{
    functions[0] = a;
    functions[1] = b;
    return 0;
}
于 2012-12-06T23:17:11.010 に答える