C语言中的*.r文件是什么?

C语言中的*.r文件是什么?,c,class-design,C,Class Design,可能重复: 我指的是这个问题: 对该问题的公认答案贴出了一本书的链接: 在本书中,作者除了使用*.c和*.h文件外,还使用了*.r文件。*.r文件像头文件一样使用,对用户隐藏“C类”的实现 我的问题是什么是*.r文件 它们是C语言编码的标准吗 还是Axel Schreiner在写他的书时想到的东西?我快速浏览了PDF,下面是一个你提到的例子: 中的类型描述结构类 新的.r应与方法相对应 在纽约的声明。h: .r指的是所谓类的表示形式(因此称为.r),其中头文件实际上定义了外观更友好的方法名

可能重复:

我指的是这个问题:

对该问题的公认答案贴出了一本书的链接:

在本书中,作者除了使用*.c和*.h文件外,还使用了*.r文件。*.r文件像头文件一样使用,对用户隐藏“C类”的实现

我的问题是什么是*.r文件

它们是C语言编码的标准吗


还是Axel Schreiner在写他的书时想到的东西?

我快速浏览了PDF,下面是一个你提到的例子:

中的类型描述结构类 新的.r应与方法相对应 在纽约的声明。h:


.r
指的是所谓类的表示形式(因此称为
.r
),其中头文件实际上定义了外观更友好的方法名称:

void * new (const void * class, ...);
void delete (void * item);
void draw (const void * self);
最后,c源文件包含实际的功能代码:

void draw (const void * self)
{ 
  const struct Class * const * cp = self;
  assert(self && * cp && (* cp) —> draw);
  (* cp) —> draw(self);
}

长话短说,是的,
.r
是阿克塞尔·施雷纳(Axel Schreiner)在他的书中提出的,正如
.r
中提到的,r是“表征”

他称它们为*r*e表示文件,因此扩展名为
.r
。它也可以是
.p
.q
。这只是作者使用的个人约定。

这绝对不是普通的C文件扩展名。这可能会为您提供答案:
void draw (const void * self)
{ 
  const struct Class * const * cp = self;
  assert(self && * cp && (* cp) —> draw);
  (* cp) —> draw(self);
}