函数指针数组工程实例
在这以前曾经写过一篇关于函数指针数组文章,今天又看到了通信工程的应用,拷贝下来,作为参考!
1、数据结构的定义
typedef int (*IO_DETECT_FUCTION)(void); typedef struct __IO_DETECT { int id; IO_DETECT_FUCTION fun; }IO_DETECT;
2、类型实体
IO_DETECT s_IO_Detect[]= { {0x01, InputPowerDetect}, {0x02, InputPowerDetect1}, {0x03, InputPowerDetect2}, {0x04, InputPowerDetect3}, {0x05, DownBrokenDectect}, {0x06, UpBrokenDetect}, {0x07, UpBrokenDetect1}, {0x08, OpticalTransDetect}, {0x09, UpOutputDetect}, {0x0A, SlaveDCAlarm}, {0x0B, SlaveACAlarm}, {0x0C, SolarEnergyDetect}, {0x0D, MainInputPowerDetect1}, {0x0E, MainInputPowerDetect2}, {0x0F, BackupInputPowerDetect1}, {0x10, BackupInputPowerDetect2}, {0x11, GZDTInputPowerDetect}, {0x12, GZDTOpeicalAlarmDect}, {0x13, BJDTSlaveDCAlarm}, {0x14, BJDTUpOutputDetect}, {0x15, BJDTSlaveACAlarm}, {0x16, DCAlarm}, {0x17, ACAlarm}, {0x18, GSMCTDownInputPowerDetect}, {0x19, CMMBInputPowerDetect}, {0x1A, BeiJingInputPowerDetect}, {0x1B, BeiJingOutputPowerDetect}, {0x1C, CDMAInputPowerDetect1}, {0x1D, DCAlarm1V}, {0x1E, ACAlarm1V}, {0x1F, BAT13VDect}, {0x20, BAT48VDect}, {0x21, ReportKey}, {0x22, InputPowerDetect4}, {0x23, OutputPowerDetect1}, {0x24, RePowerDetect1}, {0x25, ACLow_Alarm} };
3、函数调用
int IO_DetectFunction(int Id) { int i = 0; int ret = 0; for(i=0; i < sizeof(s_IO_Detect)/sizeof(IO_DETECT); i++) { if( s_IO_Detect[i].id == Id ) { ret = s_IO_Detect[i].fun(); break; } } return ret; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。