C/C++ 宏定义妙用

Author Avatar
akimoto-cris 12月 19, 2018

今天看某工程的 c++ 代码,其中看到一个很 tricky 且实用的宏定义语法糖,可以让代码可读性变强。

下面解析一下:

#define HEAT(i, j, k) heatmap[k + h3 * (j + h2 * i)]
... ...
foo = HEAT(y, x, k);

也就是说,代码块里面看起来 HEAT 是一个很漂亮的 3d 张量,但其实本质是一个自定义的一维数组。
初次见到这种宏定义用法的时候惊呼妙极了 (しょうもねえ =_=)。

当然了,这只能实现索引的包装,python 中那种切片索引还是没法实现的。