Lua库中的Strange C语法

时间:2015-05-24 06:41:51

标签: c lua torch

我在this的C代码中看到torch library等函数:

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

这是预处理器的事情,还是特定的lua?我认为这个想法与storageOffsetTHTensor“类中的一种排序方法这一事实有关,但我从未见过这种语法。

1 个答案:

答案 0 :(得分: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)

Aren的预处理器只是 grand