c - Lua 库中奇怪的 C 语法

标签 c lua torch

我看到类似 this 的函数整个torch library的 C 代码:

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

这是预处理器的东西,还是特定于 lua 的东西?我认为这个想法与 storageOffsetTHTensor“类”上的某种方法有关,但我从未见过这种语法.

最佳答案

这是一个预处理器宏

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/

相关文章:

c++ - 如何在 C++ 程序中包含流程工具?

c - 在 C 中用 strchr 迭代字符串

lua - 基于 Corona SDK 的简单示例 - 无法通过 pubnub 控制台订阅

从源代码编译 Lua 并用它创建 C 模块

python - 获取 pytorch 数据集的子集

python - Swig 和多维数组

康维斯游戏 - 访问越界数据

lua - 我应该在lua中将函数中的变量定义为局部变量吗

python - pytorch中的张量幂和乘法

installation - 导入 torch OSError : [WinError 127]