使用arduino通过宏定义多维数组

Define multi-dimensional array via macro with arduino

我想用Arduino语言通过宏来定义一个多维数组。我正在尝试保存 sketch/RAM space.

我想做这样的事情:

#define MYARR {{8, 0}, {8, 1}, {8, 2}, {8, 3}, {8, 4}, {8, 5}, {8, 6}}

function_that_uses_array(MYARR);

但我似乎无法让它工作,并出现大量错误。我尝试了几种不同的方法在宏中定义数组,但我承认我什至不确定这是否可行。

这可能吗?如果可能,怎么做?

这不是您可能期望的答案,但可以不使用多维数组,而是使用映射多个维度的一维数组,并使用 setter/getter 函数来处理值,如 in this thread 所述?

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

编辑(5/4/15):

另一件事是我怀疑是否可以使用预处理器宏将数组初始化为:

All arrays consist of contiguous memory locations

(source)

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

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