标签: c julia
我偶然发现了Julia(编程语言),并对它的能力to call C functions without any wrapper特别感兴趣。实际上它看起来更像是一个即时的C包装器:
path = ccall( (:getenv, "libc"), Ptr{Uint8}, (Ptr{Uint8},), "SHELL") time = ccall( (:clock, "libc"), Int32, ())
所以我有几个问题:
PS:很高兴让其他语言能够轻松地列出相同的东西。
答案 0 :(得分:4)
大多数语言提供与C的简单互操作。在静态类型语言中,由于显而易见的原因,需要声明导入的函数签名(Haskell,C#)。
在动态类型语言中,它不是必需的。例如,看看它是如何完成的python或lua。这里没有错,这只是动态典型化的一个特征。
当然,如果您希望将库定位到给定语言,最好以语言编写和记录绑定,以便用户不必自己处理C互操作。这显然更方便。但是包装器本身可以在内部使用这种FFI,这只是你从语言中获得的一种功能。