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

时间:2018-06-22 07:47:47

标签: c mplab

我想知道我是否可以创建两个具有相同名称但具有不同大小和ID的寄存器。 示例我需要创建一个包含40个元素的MenuRegister,另一个包含10个元素; 我正在使用两个寄存器都相同的例程。到现在为止,我需要重新创建我的例程,因为每个寄存器都有不同的名称。我可以创建两个具有相同名称但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}
....
....
..
..

}

1 个答案:

答案 0 :(得分:1)

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

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]));