我想用Arduino语言通过宏定义一个多维数组。我正在尝试保存草图/ RAM空间。
我想做这样的事情:
#define MYARR {{8, 0}, {8, 1}, {8, 2}, {8, 3}, {8, 4}, {8, 5}, {8, 6}}
function_that_uses_array(MYARR);
但是我似乎无法让它工作,并且会遇到很多错误。我已经尝试了几种不同的方法来定义宏中的数组,但我肯定不确定这是可行的。
这是可能的,如果是的话,怎么样?
答案 0 :(得分:0)
不是你可能期望的答案,但是你可以使用一维数组映射多维度而不是使用多维数组,并使用setter / getter函数来处理in this thread所解释的值?
如果将尺寸大小定义为全局常量来计算给定尺寸的索引值,则不需要辅助函数。索引 - 您可以直接使用1D数组。
修改(15年5月4日):强>
其他的事情是我怀疑数组可以使用预处理器宏初始化为:
所有数组都包含连续的内存位置
(source)
因此,数组必须是初始化变量。它可以用不同的方式初始化 - 一个使用宏中定义的数据在我对该答案的注释中的链接中描述,但多维数组也可以直接初始化:
#define MAX_ROWS 3
#define MAX_COLS 3
const int a[MAX_ROWS][MAX_COLS] = { {1,2,3},
{4,5,6},
{7,8,9} };