Hasty Briefsbeta

双语

Simplest C++ Callback, from SumatraPDF

a year ago
  • #Callbacks
  • #Programming
  • #C++
  • SumatraPDF是一款用C++编写的Windows图形界面应用程序,用于查看PDF、电子书(ePub)和漫画。
  • GUI程序中的回调机制将函数与数据结合,在编程中称为闭包(closure)。
  • C++通过std::function<>和lambda表达式支持闭包,但自动生成的名称会使崩溃报告分析变得复杂。
  • 作者提出了一种比std::function<>更简单易懂的回调解决方案,尽管该方案存在一定局限性。
  • 该方案通过基础的Func0结构体处理闭包,并使用MkFunc0模板解决类型安全性和类型转换问题。
  • 分别引入Func0和Func1来处理无参数和单参数的回调场景。
  • 相比std::function<>,作者的方案更小巧、快速且易于理解,在代码体积和编译速度方面具有优势。
  • 尽管需要编写样板代码,但该方案因其简洁性及作者的熟悉程度而成为首选。