3

torch ライブラリの C コード全体で、次のよう関数が見られます。

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

これはプリプロセッサの問題ですか、それとも lua 固有のものですか? storageOffsetこのアイデアは、「クラス」の一種のメソッドであるという事実と関係があると思いますが、THTensorこの種の構文は見たことがありません。

4

1 に答える 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)

プリプロセッサは単にgrandではありませんか?

于 2015-05-24T07:01:23.807 に答える