arduino - 如何在 Arduino 草图中获取多维数组的大小?
问题描述
我的 LED 矩阵有一大堆(约 10k)帧,我将它们放在我的 arduino 上,如下所示:
static const uint8_t PROGMEM
frames[][105] = {
{0,0,0,0,5,14,14,9,0,0,0,0,251,0,0,
0,0,0,3,255,255,255,255,252,42,2,0,0,0,0,
0,0,0,0,8,86,255,255,255,255,62,62,58,37,0,
0,0,0,0,0,1,12,31,82,252,252,39,32,2,0,
0,0,0,0,0,0,0,0,0,0,255,250,24,0,0,
0,0,0,0,0,0,0,0,0,0,255,253,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,1,253,0,0},
{0,0,0,0,8,58,255,255,255,251,23,0,0,0,0,
0,0,0,0,0,4,27,181,255,255,255,255,247,0,0,
0,0,0,0,0,0,0,0,24,251,234,226,227,194,53,
0,0,0,0,0,0,0,0,0,0,21,54,28,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
};
在这种情况下,外部数组的长度为 2。为了节省我每次生成新帧时都更新一个常量值,有没有办法计算这个数组的长度?
解决方案
sizeof(frames)
返回整个数组的大小(以字节为单位)。
sizeof(frames[0])
返回第一行的大小(与所有其他行完全相同)以字节为单位。
sizeof(frames[0][0])
返回第一行的第一项的大小(与所有其他项完全相同)以字节为单位。
所以
sizeof(frames) / sizeof(frames[0])
- 行数
sizeof(frames[0]) / sizeof(frames[0][0])
- 列数(105)
您可以定义一个宏,如
#define array_length(x) (sizeof(x) / sizeof(x[0]))
并使用它:
array_length(frame)
- 行数
array_length(frame[0])
- 列数
推荐阅读
- javascript - 如何将逻辑分解为控制器和节点中的模型
- apostrophe-cms - Apostrophe CMS:提交件小部件类型未定义错误
- json - 如何在 Postman 上显示 JSON 字符串更漂亮?
- express - Heroku 部署后 Google OAuth 中断
- c++ - 字计数器不适用于大文件并且有一些问题
- laravel-5 - 调用字符串上的成员函数 addDays()
- javascript - 更改传单easybutton.js中的样式
- javascript - JavaScript 正则表达式转译器?
- c++ - 为什么这个文件名参数是一个字符指针而不是字符串?
- node.js - 转换 Mongoose 对象引用以供 Model.collection.create() 使用