C/C++ 宏定义妙用
今天看某工程的 c++ 代码,其中看到一个很 tricky 且实用的宏定义语法糖,可以让代码可读性变强。
下面解析一下:
#define HEAT(i, j, k) heatmap[k + h3 * (j + h2 * i)]
... ...
foo = HEAT(y, x, k);
也就是说,代码块里面看起来 HEAT
是一个很漂亮的 3d 张量,但其实本质是一个自定义的一维数组。
初次见到这种宏定义用法的时候惊呼妙极了 (しょうもねえ =_=)。
当然了,这只能实现索引的包装,python 中那种切片索引还是没法实现的。