检查 C 中的 OCaml 类型签名
假设我有一个 OCaml 函数
let _ = register "cbf_coh_insert" (fun k v -> print_endline ("Inserted key=" ^ k ^ " value=" ^ v))
,这是一个带有两个参数的函数。在 C 端,我会用 caml_callback2(*caml_named_value("cbf_coh_insert"), k, v); 来调用它。在 C 端,有没有办法检查参数数量(本例中为 2)是否匹配?除了我猜想调用它并试图捕获 SIGSEGV 之外。谢谢!
更新:一些背景。
Let's say I have an OCaml function
let _ = register "cbf_coh_insert" (fun k v -> print_endline ("Inserted key=" ^ k ^ " value=" ^ v))
That is a function that takes two arguments. On the C side, I would call that with caml_callback2(*caml_named_value("cbf_coh_insert"), k, v);
. Is there a way, on the C side, to check that the number of arguments (2 in this case) match? Other than I guess calling it and trying to trap a SIGSEGV. Thanks!
UPDATE: some background.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
NO WAI
这应该在编译时确保(手动或通过代码生成或通过解析和检查 C 和 OCaml 代码是否同步)
UPDATE
示例寄存器函数:
UPDATE
您为什么认为这是不可能的?查看始终执行此操作的现有绑定。
顺便说一句,这个问题完美地说明了XY问题。
NO WAI
This should be ensured at compile time (either manually or by code generation or by parsing and checking whether C and OCaml code are in sync)
UPDATE
Example register function :
UPDATE
Why do you think it is not possible? Look at existing bindings that do this all the time.
BTW This question is a perfect illustration for XY problem.