本帖最后由 snakeemail 于 2010-6-27 11:39 编辑
Q1.我使用的是PIC的MCC18编译器。
想用这个结构体实现菜单的跳转。
typedef struct
{
uchar KeyStateIndex; //当前状态索引号
uchar KeyUpState; //按下"向上"键时转向的状态索引号
uchar KeyDnState; //按下"向下"键时转向的状态索引号
uchar KeyEscState; //"ESC"索引
uchar KeyCrState; //按下"回车"键时转向的状态索引号
rom void (*CurrentOperate)(); //当前状态应该执行的功能操作
}KbdTabStruct;
rom void (*KeyFuncPtr)(); //按键功能指针
rom KbdTabStruct KeyTab[1] =
{
{ 0, 0, 0, 0, 0, (*DispMain)}
};
结果程序编译到此句出现告警.
KeyFuncPtr = KeyTab[0].CurrentOperate;
(*KeyFuncPtr)();//执行当前按键的操作
1988:Warning [2058] call of function without prototype
请问如何消除这个告警
Q2.函数指针如何带参数
由于有一些菜单函数别人已经写好,例如:
void DispMenu(rom char * pString, unit Value, uint Max, uint Min);
DispMenu("电压", Voltage, 120, 20)
现在我要把加入菜单的数组中
rom KbdTabStruct KeyTab[2] =
{
{ 0, 0, 0, 0, 0, (*DispMain)},//麻烦是有些菜单函数是带输入参数,有的不带
{ 0, 0, 0, 0, 0, (*DispMenu) //这里我还要把输入参数加上,怎么弄?
}; //("电压", Voltage, 120, 20) |