Lua库中的奇怪C语法

3

我在Torch库的 C 代码中看到类似这样的函数

long THTensor_(storageOffset)(const THTensor *self)
{
  return self->storageOffset;
}

这是一个预处理器的事情,还是一些特定于Lua的东西?我想这个想法与 storageOffset 是在 THTensor “类”上的某种方法有关,但我从未见过这种语法。


THTensor_只是一个宏。 - Christoph
1个回答

8

这是一个预处理宏。

lib/TH/THTensor.h:
#define THTensor_(NAME)   TH_CONCAT_4(TH,Real,Tensor_,NAME)

导致...

lib/TH/THGeneral.h.in:
#define TH_CONCAT_4(x,y,z,w) TH_CONCAT_4_EXPAND(x,y,z,w)

最后...

lib/TH/THGeneral.h.in:
#define TH_CONCAT_4_EXPAND(x,y,z,w) x ## y ## z ## w

因此,
long THTensor_(storageOffset)(const THTensor *self)

最终变成了这样:
long THRealTensor_storageOffset(const THTensor *self)

预处理器不是很棒吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接