具有不同 ID 的结构中的相同 ArrayName

Same ArrayName in struct with different ID

我想知道我是否可以创建两个名称相同但大小和 ID 不同的寄存器。 示例我需要创建一个包含 40 个元素的 MenuRegister 和另一个包含 10 个元素的 MenuRegister; 我正在使用两个寄存器相同的例程。直到现在我需要重新创建我的例程,因为每个寄存器都有不同的名称。我可以创建两个名称相同但 ID 不同的寄存器吗?

例子

 typedef union
{
  unsigned int Value;
  unsigned char bytes[2];

}NonStaticParameters;
//////////WaterPellet///////////////////
extern volatile NonStaticParameters MenuRegister[40];
extern volatile NonStaticParameters ExtraMenuRegister[10];

我收到重新声明的错误数组维度

这里有一个例程例子

void TestRoutine()
{
MenuRegister[1].Value={User has set its Value}
....
....
..
..

}

正如评论中已经建议的那样,您可能想要这个:

extern volatile NonStaticParameters MenuRegister_1[40];  // different names here
extern volatile NonStaticParameters MenuRegister_2[10];

void TestRoutine(NonStaticParameters menu[], int size)   // TestRoutine with parameter and size
                             // the size parameter is useful so you know
                             // the number of elements in the register
{
  menu[1].Value={User has set its Value}
  ....
  ....
}

TestRoutine(MenuRegister_1, sizeof(MenuRegister_1) / sizeof(MenuRegister_1[0]));
...
TestRoutine(MenuRegister_2, sizeof(MenuRegister_1) / sizeof(MenuRegister_1[0]));