Cでオプションのコールバックを指定する方法は何ですか?私はArduinoのハードウェアを常にポーリングして無線パケットを待つ長時間実行する関数を持っています。ハードウェアをポーリングしてパケットを読み取ることができなくなるたびにコールバックするオプションのコールバックを指定するオプションがあります。スケルトン関数の定義は次のとおりです。Cでオプションのコールバック
typedef void(*waitCallback)(const unsigned long elapsed);
bool readPacket(unsigned long timeout, waitCallback cb) {
long time = millis();
unsigned long delta = 0;
while(delta < timeout) {
if(receivedPacket()) {
return true;
}
delta = millis() - time;
cb(delta);
}
return false;
}
私の質問は、コールバックをオプションにすることができますか?私はボディを持たないダミー関数を作成し、コールバックをしたくない場合はコールバックとして指定することができますが、これを行うにはよりクリーンな方法がありますか?
コールバックのためにNULLを渡して、関数内で 'cb!= NULL'それを呼び出す前に。 –
'NULL 'でなければ' NULL'で 'call'をし、' readPacket'で 'NULL'を 'cb'でチェックして、コールバックをしたくない場合は' cb'を 'NULL'として渡します。 –