Lua 库中的奇怪 C 语法
Strange C syntax in Lua library
我看到类似 this throughout the torch library 的 C 代码的函数:
long THTensor_(storageOffset)(const THTensor *self)
{
return self->storageOffset;
}
这是预处理器的东西,还是 lua 特定的东西?我认为这个想法与 storageOffset
是 THTensor
"class" 上的一种方法有关,但我从未见过这种语法。
这是一个预处理器宏
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)
预处理器不只是 grand 吗?
我看到类似 this throughout the torch library 的 C 代码的函数:
long THTensor_(storageOffset)(const THTensor *self)
{
return self->storageOffset;
}
这是预处理器的东西,还是 lua 特定的东西?我认为这个想法与 storageOffset
是 THTensor
"class" 上的一种方法有关,但我从未见过这种语法。
这是一个预处理器宏
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)
预处理器不只是 grand 吗?