C でのコールバックとそのさまざまな使用
C では、コールバックはクラスまたは関数によって受け入れられる呼び出し可能 (後述) です。提供されたコールバックに基づいて現在のロジックをカスタマイズするために使用されます。
使用理由コールバック:
C の Callable とは何ですか?
コールバックの作成と呼び出し:
関数ポインタ:
メンバー関数へのポインター:
std::function オブジェクト:
使用例std::function:
一般化コード:
template<class R, class T> void stdf_transform_every_int_templ(int *v, unsigned const n, std::function<R(T)> fp) { for (unsigned i = 0; i < n; ++i) { v[i] = fp(v[i]); } }
テンプレート化されたコールバック:
template<class F> void transform_every_int_templ(int *v, unsigned const n, F f) { for (unsigned i = 0; i < n; ++i) { v[i] = f(v[i]); } }
タイプ名実装:
template <class T> std::string type_name() { typedef typename std::remove_reference<T>::type TR; std::unique_ptr<char, void(*)(void*)> own (abi::__cxa_demangle(typeid(TR).name(), nullptr, nullptr, nullptr), std::free); std::string r = own != nullptr?own.get():typeid(TR).name(); if (std::is_const<TR>::value) r += " const"; if (std::is_volatile<TR>::value) r += " volatile"; if (std::is_lvalue_reference<T>::value) r += " &&"; else if (std::is_rvalue_reference<T>::value) r += " &&"; return r; }
以上がコールバックは C でどのように機能し、そのさまざまな用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。