Chinaunix首页 | 论坛 | 博客
  • 博客访问: 148755
  • 博文数量: 17
  • 博客积分: 359
  • 博客等级: 一等列兵
  • 技术积分: 382
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-08 19:51
文章分类

全部博文(17)

文章存档

2012年(17)

我的朋友

分类: C/C++

2012-04-14 21:43:16

在阅读mini2440test 时发现一个不错的操作,通过结构体和函数指针进行菜单操作!

如下:

struct {
void (*fun)(void); \\为一个函数指针
char *tip;
}CmdTip[] = {
{ Temp_function, "Please input 1-16 to select test" } ,
{ BUZZER_PWM_Test, "Test PWM" } ,
{ RTC_Display, "RTC time display" } ,
{ Test_Adc, "Test ADC" } ,
{ KeyScan_Test, "Test interrupt and key scan" } ,
{ Test_Touchpanel, "Test Touchpanel" } ,
{ TFT_LCD_Test, "Test TFT-LCD or VGA1024x768 module" } ,
{ Test_Iic, "Test IIC EEPROM, if use QQ2440, please remove the LCD" } ,
{ PlayMusicTest, "UDA1341 play music" } ,
{ Test_SDI, "Test SD Card" } ,
{ Camera_Test, "Test CMOS Camera"},
{ 0, 0}
}; \\以上定一个结构体,并初始化

主函数中:

main(){

.....
while(1)
{
U8 idx;

Uart_Printf("\nPlease select function : \n");
for(i=0; CmdTip[i].fun!=0; i++)
Uart_Printf("%d : %s\n", i, CmdTip[i].tip);
idx = Uart_GetIntNum_GJ() ;
if(idx{
(*CmdTip[idx].fun)();
Delay(20);
Uart_Init( 0,115200 );
}

}

}


(*CmdTip[idx].fun)() == ( *(CmdTip[idx].fun))( ) 也就是取出一个结构体中的一个字段 而这个字段是个函数 所以后面加上()来执行它

阅读(2678) | 评论(0) | 转发(0) |
0

上一篇:linux 下的vsftp

下一篇:我的conky配置

给主人留下些什么吧!~~