c - 结构中相同的 ArrayName 具有不同的 ID
问题描述
我想知道我是否可以创建两个具有相同名称但具有不同大小和不同 ID 的寄存器。示例我需要创建一个包含 40 个元素和另一个包含 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]));
推荐阅读
- javascript - 如何在javascript中指定类型
- php - 将 PHP 中的 esc_html 命令与 HTML 结合
- python - 使用两个高斯的 lmfit 如何限制第二个峰值依赖于第一个峰值的参数?
- javascript - 优化我的 KnockOutJS 函数 - 从丑陋的代码到干净,如何?
- python - 当我进入管理面板时,我收到错误 DoesNotExist at /admin/login/ 网站匹配查询不存在
- r - 在 survdiff 中获得更高的 pvalue 精度
- c++ - 如何在更改链接器设置和搜索目录后修复“'::iswblank' 尚未声明”
- c# - 如何在 C# 中为 Amazon S3 客户端设置 accessKeyID?
- r - 如何私下发布 R Markdown Shiny Dashboard?
- c++ - 如何获取systemc线程的堆栈大小?