【发布时间】:2015-12-05 20:58:52
【问题描述】:
我是这个论坛的新手。非常少的编程经验。而且英语不是我的主要语言:)
我正在为微控制器编写 C 代码,现在我已经创建了带有结构数组的图形菜单。在这个数组中,我定义了按下按钮(UP、DOWN、ENTER)时的跳转、菜单文本和按下按钮时调用的函数(如果你在正确的子菜单上,你可以调用函数)。
结构定义:
typedef const struct Menu_structure
{
const char *text;
unsigned char Menu_points;
unsigned char Menu_button_UP;
unsigned char Menu_button_DOWN;
unsigned char Menu_button_ENTER;
Menu_Waveform_parameter_t Waveform_parameter_value;
void (*Menu_function_UP) ();
void (*Menu_function_DOWN) ();
void (*Menu_function_ENTER) ();
} MenuEntry;
1:菜单测试,2:当前子菜单的大小(用于刷新),3:UP时跳转,4:down时跳转,5:enter时跳转,6:参数枚举,7 : 按下按钮时调用的函数。
数组示例:
MenuEntry menu[] =
{
{menu_01, 5, 0, 0, 0, 0, 0, 0, 0},
{menu_02, 5, 1, 2, 1, 0, 0, 0, funtion_0},
{menu_03, 5, 1, 3, 6, 0, 0, 0, 0},
{menu_04, 5, 2, 4, 11, 0, 0, 0, 0},
{menu_05, 5, 3, 4, 1, 0, 0, 0, funtion_1},
}
调用函数的代码(按下回车键)
case Button_ENTER: if (menu[Menu_selected].Menu_function_ENTER != 0)
{
menu[Menu_selected].Menu_function_ENTER();
}
break;
一切都很完美。问题是我的菜单很长。这意味着我需要很多不同的函数(其中一些可以与参数结合使用)。
我的问题来了。如何将常量参数保存在结构数组中。有什么建议么。谢谢。
【问题讨论】:
-
这不是论坛。
-
你能把它们作为全局变量保存在你的代码中,让你的其他函数可以访问吗?
-
1) SO 不是咨询网站。 2) 为您的函数使用正确的原型声明符,而不是 K&R 风格。 3)如果你需要很多函数,你认为如何减少函数的数量?
-
抱歉有错误。我会更仔细地阅读规则。通过减少函数,我的意思是我做了一个函数来改变参数中的一个变量,我可以定义哪个方向和多少。我想避免很多全局变量,因为将来很难更改代码。
-
你想要多少个参数?他们应该有什么类型?