は、それが世界的にボイドを返すスコープの、パラメータなしの関数へのポインタを返す単一のパラメータと関数を作成することは可能ですか?ステートフルC++グローバルvoid関数ポインタ
私はデジタル・ピンに接続するために、割り込みサービスルーチンのシリーズを定義しようとしている組み込みハードウェア、の意味で尋ねます。
#define MAX_BUTTONS 5
int main()
{
for (int i = 0; i < MAX_BUTTONS; i++) {
attachInterrupt(i, isrForI(i), RISING);
}
}
typedef void (*Isr)(void);
Isr isrForI(int i)
{
// Return a function of type Isr which calls handleInterrupt(i)
}
void handleInterrupt(int i)
{
// Do something with i
}
ここでの問題は、私はMAX_BUTTONS
は、任意の数とすることができるように拡張可能である必要がよう、isrForI
に十分な汎用的なものにする方法を知られていない:
私が何を意味するかの一例。
あなたは 'isrFor(I)'を返すという機能を示すために、あなたの例を拡張することができます。 –
状態は必要ですが、機能のないポインタを使用していますか?ファンクタではありませんか? – StoryTeller
指示が不明です。これらのボイド関数をオンザフライで生成するか、整数パラメータに基づいて既存のプールからボイド関数を選択しますか?後者の場合、関数ポインタの配列を探しているようです。あるいは、あなたは同じ機能を意味するかもしれませんが、異なる州がそれに付いていますか? –