gpt4 book ai didi

用于 2 维和 3 维索引的 C 宏

转载 作者:太空宇宙 更新时间:2023-11-04 07:39:21 24 4
gpt4 key购买 nike

我正在寻找任意值的 2 维和 3 维索引的快捷方式,我知道这适用于给定数组 a[]

#define a(i,j,k) a[(i)*span*span+(j)*span+(k)]
#define b(i,j) b[(i)*span+(j)]

但我不明白如何允许这些宏对任意数组进行操作,例如;

x(i,j,k)

有人愿意给我提供线索吗?

最佳答案

不要将宏名称定义为ab,而是将数组作为参数:

#define arr3d(a,i,j,k) a[(i)*span*span+(j)*span+(k)]
#define arr2d(b,i,j) b[(i)*span+(j)]

然后 ab 将成为参数,您将能够将其用于不同的数组。

编辑

例如:char newarr[5][5][5];arr3d(newarr, 3, 3, 3);

此外,如果 span 不是在您需要使用此宏的所有范围内定义的变量,它将不起作用,您需要向宏添加另一个参数 - span,所以宏定义看起来像:

#define arr3d(a,i,j,k,span) a[(i)*(span)*(span)+(j)*(span)+(k)]

是的,我通常会避免这种情况。

关于用于 2 维和 3 维索引的 C 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5702451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com