0
使用球拍的FFI声明功能足够简单,可以使用_fun
和define-ffi-definer
。 (A教程可以在the PRL blog找到)。例如,我可以为atoi
绑定:Racket/C FFI中的可变组合函数FFI
#lang racket
(require ffi/unsafe
ffi/unsafe/define)
(define-ffi-definer define-libC#f)
(define-libc atoi (_fun _string -> _int))
现在我可以打电话atoi
与球拍弦:
> (atoi "5")
5
现在的问题是,如何我称C函数具有可变参数数量,如printf
,谁的签名是:
int printf(const char *format, ...);
我猜想(因为链接^ h动态地出现),Racket代码在最后应该有一个'rest'参数,它为剩余的参数提供一个数组(指针),这个参数可以是null终止或(更可能),由另一个参数表示。但是,我想不出有什么好的方法来测试它。
那么,你如何处理Racket-C FFI的可变参数函数呢?