Chicken のスキーム コードの次のスニペットがあります。
(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 を使用して C コードをコンパイルしたか gcc を使用してコンパイルしたかによって異なります) 。だけでなく、 foreign-declare
"および"[ includes] 与えられた文字列を逐語的に生成されたファイルのヘッダーに挿入する"を使用して、生成されたスキーム展開にコードを埋め込みforeign-declare
ます。私がチキン (そして実際にはスキーム) に慣れていないことを考えると、どちらも特に役に立ちません。 、bind
ととの違いは何bind*
ですか? どちらを使用する必要がありますか?