通过arduino宏定义多维数组

通过arduino宏定义多维数组,arduino,Arduino,我想用Arduino语言通过宏定义多维数组。我正在努力节省草图/内存空间 我想这样做: #定义MYARR{{8,0}、{8,1}、{8,2}、{8,3}、{8,4}、{8,5}、{8,6} 函数_使用_数组(MYARR); 但我似乎无法让它发挥作用,并且犯了很多错误。我尝试了几种在宏中定义数组的不同方法,但我承认我甚至不确定这是否可行 这是否可能,如果可能,如何实现?这不是您可能期望的答案,但您可以使用一维数组映射多个维度,并使用setter/getter函数处理所解释的值,而不是使用多维数组

我想用Arduino语言通过宏定义多维数组。我正在努力节省草图/内存空间

我想这样做:

#定义MYARR{{8,0}、{8,1}、{8,2}、{8,3}、{8,4}、{8,5}、{8,6}
函数_使用_数组(MYARR);
但我似乎无法让它发挥作用,并且犯了很多错误。我尝试了几种在宏中定义数组的不同方法,但我承认我甚至不确定这是否可行


这是否可能,如果可能,如何实现?

这不是您可能期望的答案,但您可以使用一维数组映射多个维度,并使用setter/getter函数处理所解释的值,而不是使用多维数组

如果将维度大小定义为全局常量以计算给定维度索引的索引值,则不需要使用辅助函数-然后可以直接使用1D数组

编辑(5/4/15):

另一件事是,我怀疑数组是否可以使用预处理器宏进行初始化,如下所示:

所有阵列都由连续的内存位置组成

()

因此,数组必须是已初始化的变量。它可以以不同的方式初始化-使用宏中定义的数据的方法在我对该答案的评论中的链接中进行了描述,但是多维数组也可以直接初始化:

 #define MAX_ROWS 3
 #define MAX_COLS 3
 const int a[MAX_ROWS][MAX_COLS] = { {1,2,3},
                                     {4,5,6},
                                     {7,8,9}  };

有趣的是,尽管我认为这仍然让我处于一种无法通过arduino语言中的宏定义数组的情况。你能帮忙吗?看看这里的第二个答案:你仍然需要初始化一个变量(int v[][MAXCOLUMNS]=VALUE;在链接的答案中)。代码编译,但我现在没有机会用真正的AVR检查它。谢谢你的回答。这对我来说很有意义!