struct { void (*fun)(void); char *tip; }

//

//

//

struct {

void (*fun)(void);

char *tip;

}CmdTip[] = {

{ Temp_function, "Please input 1-11 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" } ,

{ Lcd_TFT_Test, "Test TFT LCD" } ,

{ Test_Iic, "Test IIC EEPROM" } ,

{ PlayMusicTest, "UDA1341 play music" } ,

{ RecordTest, "UDA1341 record voice" } ,

{ Test_SDI, "Test SD Card" } ,

{ Camera_Test, "Test CMOS Camera"},

{ 0, 0}

};

//

//

//

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<i)

{

(*CmdTip[idx].fun)();

Delay(20);

Uart_Init( 0,115200 );

}

}

以上是一个结构体数组,是TQ2440板子资料中的一段程序。

该结构体采用结构体类型变量的第三种定义方法,直接定义结构体类型变量并赋值。结构中有两个成员,一个指针函数其返回值类型为void,参数类型也为void。当使用CmdTip[i].fun返回的是一个函数的地址,除最后一个元素外,返回的地址值不为0,而结构体数组的最后一个元素为{0,0},其目的就在于结束循环。

struct { void (*fun)(void); char *tip; }_攻城步兵_新浪博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开心超人dev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值