首页 > 解决方案 > 阿杜诺;动态获取数组元素;数组是 struct 类型,包含不同大小的字符串

问题描述

在 Arduino C++ 中,我有以下结构:

struct acceptedCommand {
 String Command;
 int   switchcase;
};

然后我像这样初始化上述结构的数组:

const acceptedCommand acceptedCommands[] = { 
  {"set-amountofcells", 1}, 
  {"set-cell-min-voltage", 2},
  {"set-cell-max-voltage", 7}
  ...
};

期望的结果: 我想动态返回这个数组中的元素数。

我已经尝试过: 我不能使用 SizeOf 函数,因为它只返回数组使用的字节总数。

我也不能将 SizeOf 返回的值除以结构的大小,因为数组的每个元素的大小不同(因为字符串的长度不同)。

那么如何动态获取acceptedCommands[] 数组中的元素数量呢?

标签: arraysarduinoelement

解决方案


sizeof(acceptedCommands)/sizeof(acceptedCommand)应该给你数组中结构的数量,从而得到命令的数量。

您可能认为您的结构是可变大小的,但事实并非如此,String即使其 char 数组的长度不同,sizeof 在编译时也是已知的,因为String将是一个对象,其中可能包含指向 char 数组的指针,并且 sizeof 指针是已知的在编译时。


推荐阅读