我需要帮助说服第三方软件供应商改变他们的API传递一些用户数据给回调。你知道吗
这似乎是一种标准做法,因为我经常看到在使用回调的地方使用它。 我正在寻找一些弹药给他们的开发团队,说服他们这样做。你知道吗
我的理由是,我已经为它们的所有API调用创建了1:1的Python绑定(接受回调的除外)。 如果他们的API也对用户数据无效。。。例如:
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库提供了这一功能,但是这些绑定在性能上有点慢,我担心它们会有什么魔力来实现它。。。。我也不想移植我的绑定。你知道吗
问题是,尽管我们向这个软件的客户付费,但要让他们承认错误需要花费很多时间,更不用说提供新的功能了。我的弹药越多越好。 任何关于编程指南、最佳实践等的文档,如果说为用户数据提供一个空白*都是有帮助的。你知道吗
如果要多次注册同一函数,则需要
user_data
字段。在这种情况下,不同的user_data
将区分它们。你知道吗这在以下几种情况下很有用:
注册与某个对象相关,可能有许多对象(例如,打开的文件)。您不希望每个打开的文件都有一个单独的函数。
您希望在几个注册函数中执行基本相同的操作,并且可以用一些值(例如数值常量)来表示差异。在这种情况下,多次注册同一个函数并使
user_data
包含不同的值是很有用的。p.S.
void *callback
是个错误的定义。类型应该定义回调的参数和返回类型(最好使用typedef
)。你知道吗相关问题 更多 >
编程相关推荐