我看到类似 this 的函数整个torch library的 C 代码:
long THTensor_(storageOffset)(const THTensor *self)
{
return self->storageOffset;
}
这是预处理器的东西,还是特定于 lua 的东西?我认为这个想法与 storageOffset
是 THTensor
“类”上的某种方法有关,但我从未见过这种语法.
最佳答案
这是一个预处理器宏
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)
预处理器不是伟大的吗?
关于c - Lua 库中奇怪的 C 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30420807/