1
綁定*我的方案代碼雞下面的代碼片段:綁定VS雞方案
(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代碼)。綁定文檔簡單says「[bind * is]類似於綁定,而且在生成的Scheme擴展中嵌入代碼foreign-declare
「and」[foreign-declare
] [foreign-declare
includes] verbatim給出生成的文件的頭文件中的字符串「 - 既然我是雞新手(實際上是Scheme),它們都不是特別有用。它們是什麼實際上,bind
和bind*
之間有什麼區別,我應該什麼時候使用?
我創建了一個頭文件爲我的測試功能,包括它,並用該程序確實沒有星號,甚至工作,但包括仍然必須使用'bind *'來完成,即使使用include,它仍然可以工作,如果我使用'bind *',所以我仍然不確定它們究竟有什麼不同。 – jaymmer
@jaymmer是的,'#include'必須使用'bind *'完成,正如您從所有示例中所看到的那樣。這樣做會導致'#include'(以及函數聲明,如果你使用'bind *'作爲這些聲明的話)被髮送到生成的C文件中。如果函數聲明與頭文件_exactly_中的內容匹配,那麼使用'bind *'替代它們是無害的。否則,你的編譯器可能會阻止...... –
你可以使用'csc -t'生成C文件而不編譯它們。然後,您可以比較使用'bind *'與'bind'進行比較的效果。 –