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中文网其他相关文章!