我有下面的鸡计划代码片段:
(require-extension bind)
(bind* "double int_exp(double, int);")
(bind* "double square(double);")
(begin
(print (int_exp 1.2 1))
(print (square 2.0)))int_exp和square只是我用来进行测试的小测试函数(用C编写的)。这段代码运行良好;但是,一旦删除星号,编译后的程序就会打印假值(而伪值取决于我是使用clang还是gcc编译C代码)。bind文档--简单地说是他说 "bind* --类似于bind,但也使用foreign-declare“和 "foreign-declare将代码嵌入生成的方案扩展中,其中包括给定的字符串逐字放入生成文件的头中”--这两种方法都没有特别的帮助,因为我对小鸡(实际上是Scheme )还不熟悉。它们实际上意味着什么,bind和bind*之间有什么区别,我应该在什么时候使用它们?
发布于 2013-10-05 19:58:00
据我所知,如果您正在调用的函数已经在您以前的bind d头文件中声明过(包括任何由chicken.h自动包含的内容,所有的chicken.h程序都包括在内),则可以使用chicken.h。如果您正在调用的函数尚未声明,则还需要使用bind*发出声明。
因此,这是可行的(math.h已经包括在chicken.h中):
(use bind extras)
(bind "double cbrt(double)")
(format #t "cbrt(~a) = ~a~%" 27 (cbrt 27))https://stackoverflow.com/questions/19198952
复制相似问题