Julia语言中ccallable宏的作用是什么?
Julia
@ccallable 宏的实际用途说明 @ccallable 是Julia核心库中定义的内部非公开宏,位于base/c.jl中,暂无公开文档是因为它仅面向Julia核心开发场景,不对普通用户提供稳定的使用承诺。
它的核心作用是将Julia侧定义的函数适配为可直接被C/C++等原生代码调用的导出函数,具体功能如下:
- 自动处理Julia函数与C ABI的调用约定适配,不需要手动处理类型转换、栈帧管理等底层细节
- 被标记的函数会被编译器纳入可被原生代码直接寻址的导出符号表,在编译Julia本体、内置原生组件时可以直接通过符号名调用
- 普通用户如果有把Julia函数暴露给C代码调用的需求,应该使用公开稳定的
@cfunction接口,不要依赖无版本兼容保证的@ccallable
典型使用示例(来自base/c.jl源码):
@ccallable function jl_getpid()::Cint return getpid() end上述代码生成的
jl_getpid可以直接在C侧声明int jl_getpid(void)后正常调用,不需要额外的桥接逻辑。
内容的提问来源于stack exchange,提问作者Jose Manuel de Frutos
相关产品推荐
相关产品推荐

