【问题标题】:The meaning of jl_value_t in julia source codejulia源码中jl_value_t的含义
【发布时间】:2014-02-16 13:14:48
【问题描述】:
我正在尝试找到有关 Julia 源代码的方法,即codegen.cpp。他们使用引用自身的结构jl_value_t:
#define JL_DATA_TYPE \
struct _jl_value_t *type;
typedef struct _jl_value_t {
JL_DATA_TYPE
} jl_value_t;
在eclipse中调试源代码时,这似乎没有包含任何有用的信息,但是它经常被使用。我应该如何解释这个结构?它包含什么信息?
【问题讨论】:
标签:
eclipse
compilation
julia
【解决方案1】:
对我来说,用 C 编写动态代码似乎是一个(肮脏的)技巧。所有装箱的 Julia 值都可以有自己的内存布局,只要它们以指向类型的指针开头,这样 C代码可以在访问类型定义的任何其他字段之前检查类型。
有一些方便的函数可以检查jl_value_t* 可能指向的一些常见类型。 (例如jl_is_type(v)、jl_is_long(v)、jl_is_symbol(v)、jl_is_typevar(v)、jl_is_bool(v))。当您知道指向的对象的类型时,您可以将指针从src/julia.h 转换为正确的结构。