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

时间:2013-05-07 13:07:58

标签: c ruby

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

2 个答案:

答案 0 :(得分:11)

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

#if defined HAVE_UINTPTR_T && 0
typedef uintptr_t VALUE;
...
#elif SIZEOF_LONG == SIZEOF_VOIDP
typedef unsigned long VALUE;
...    
#else
# error
#endif

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

答案 1 :(得分:3)

  

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

     

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

     

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

     

<强> 1。确定VALUE的数据类型

     

<强> 2。将VALUE转换为C数据

有关详细信息,请查看此处:Basic Knowledge