我需要帮助说服第 3 方软件供应商更改他们的 API 以将一些用户数据传递给回调。
这似乎是一种标准做法,因为我经常在使用回调的地方看到它。我正在寻找一些弹药给他们的开发团队以说服他们这样做。
我的理由是我已经为他们的所有 API 调用创建了 1:1 Python 绑定(除了那些需要回调的调用)。如果他们的 API 也为用户数据占用了 void* ......例如:
SOME_API_register_function(char* name, char* desc, void* callback, void* user_data);
代替...
SOME_API_register_function(char* name, char* desc, void* callback);
这将使我更容易(甚至可能)为这些函数创建绑定。我的绑定目前在 Cython 中,它缺乏动态创建有效 C 回调的能力。我相信 cffi Python 库提供了这种能力,但是这些绑定在性能上有点慢,我担心他们正在做的那种魔术来实现它......我也不想移植我的绑定.
问题是,即使我们向该软件的客户付费,让他们甚至承认错误都需要很多时间,更不用说提供新功能了。我拥有的弹药越多越好。任何说明为用户数据提供 void* 的编程指南、最佳实践等文档都会有所帮助。