Chicken方案中绑定vs绑定*

时间:2013-10-05 14:40:47

标签: scheme chicken-scheme

我有以下鸡的Scheme代码片段:

(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_expsquare只是我用于测试的小型测试函数(用C语言编写)。这段代码工作正常;但是,一旦删除星号,编译后的程序就会打印伪造的值(而伪造的值取决于我是否使用clang或gcc编译了C代码。)绑定文档只是says“[bind * is]类似于bind,但也使用foreign-declareand”[foreign-declare包含]将代码嵌入生成的Scheme扩展中,并将字符串逐字地生成到生成文件的标题中“ - 既不特别有用我是鸡的新手(实际上是Scheme。)他们实际上是什么意思,bindbind*之间的区别是什么?我应该何时使用?

1 个答案:

答案 0 :(得分:3)

据我所知,如果您调用的函数已在先前bind d的头文件中声明(包括{{1}自动包含的内容,则使用#include所有Chicken程序都包括在内)。如果您正在调用的函数尚未声明,那么您还需要使用chicken.h发出声明。

因此,这可行(bind*已包含math.h):

chicken.h