Ruby源文件中的"VALUE"类型是什么?

Saz*_*zid 7 c ruby

我是Ruby的新手,但是当我搜索Ruby的文档时,我发现了一些C源代码,它也包含在文档中.在几乎所有这些参考文献中,我发现了VALUE,我很确定它是一个struct.但是这有什么属性,VALUE struct这实际上是做什么的?

Jus*_*ier 12

您可以VALUE在头文件中看到定义ruby/ruby.h:

#if defined HAVE_UINTPTR_T && 0
typedef uintptr_t VALUE;
...
#elif SIZEOF_LONG == SIZEOF_VOIDP
typedef unsigned long VALUE;
...    
#else
# error
#endif
Run Code Online (Sandbox Code Playgroud)

所以value只是指向对象的指针.如Priti链接TYPE()中所述,同一文件中有一个宏可用于标识a指向的数据类型VALUE.


Aru*_*hit 3

在 C 语言中,变量有类型,而数据没有类型。相比之下,Ruby 变量没有静态类型,并且数据本身也有类型,因此数据需要在语言之间进行转换。

Ruby 中的数据由 C 类型“VALUE”表示。每个 VALUE 数据都有其数据类型。

要从 VALUE 检索 C 数据,您需要:

1. 识别VALUE的数据类型

2. 将VALUE转换为C数据

欲了解更多信息,请看这里:Basic Knowledge