使用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} };
我想用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} };