Callback Library
概要
このライブラリは、コールバック関数を簡単に管理するためのC++ライブラリ 任意のハンドルに対してコールバック関数を登録し、優先度に基づいて実行可能
関数概要
attach
コールバック関数を登録
cpp
void attach(intptr_t handle, std::any &&fn, uint8_t priority);handle: コールバック関数を関連付けるハンドルfn: 登録するコールバック関数priority: コールバック関数の優先度
callback
登録されたコールバック関数を実行
cpp
template <class T, class... Args>
void callback(intptr_t handle, Args... args);handle: 実行するコールバック関数が関連付けられているハンドルargs: コールバック関数に渡す引数
使用方法
- コールバック関数を登録cpp
callback::attach((intptr_t)&huart2, []() { UARTread(); }, 0);callback::attach:attach関数を呼び出す(intptr_t)&huart2:huart2のアドレスを整数型ポインタにキャストして渡す。これはコールバック関数を関連付けるハンドル[]() { UARTread(); }: ラムダ式で、UARTread関数をコールバックとして登録0: コールバック関数の優先度を指定
NOTE
ラムダ式とは
ラムダ式は、無名関数(名前のない関数)を定義するための構文。C++11以降で導入され、簡潔に関数オブジェクトを作成可能。以下はラムダ式の基本的な構文
cpp
[キャプチャ](引数) -> 戻り値の型 { 関数の本体 }[]: キャプチャリスト。外部の変数をラムダ式内で使用するために指定(): 引数リスト。関数に渡す引数を指定-> 型: 戻り値の型。省略可能{}: 関数の本体
- 登録されたコールバック関数を実行cpp
callback::callback<void()>((intptr_t)&huart2);
注意事項
- 登録するコールバック関数は
std::functionである必要がある - コールバック関数の実行中に例外が発生しないように注意