Pie*_*erV 5 eclipse compilation julia
我正试图找到我对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;
Run Code Online (Sandbox Code Playgroud)
在eclipse中调试源代码时,这似乎不包含任何有用的信息,但它经常被使用.我该如何解释这个结构?它包含哪些信息?
对我来说,似乎是一个(脏)技巧,能够在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
.