在u-boot中会使用到函数指针数组,用VC6实现了一下,虽然简单,这里还是记录下。
/************************************
** main.h 的内容
*************************/
#ifndef __MAIN_H
#define __MAIN_H
typedef int (*func_handle)(int para1, int para2 );
int sum(int para1, int para2);
int diff(int para1, int para2);
int div(int para1, int para2);
int mul(int para1, int para2);
#endif
/************************************
** main.c 的内容
*************************/
#include <stdio.h>
#include "main.h"
func_handle func;
func_handle func_array[4] = {
sum,
diff,
div,
mul,
};
int main( void )
{
int value = 0;
int index = 0;
printf("for test function pointer with type 1.\n");
func = sum;
value = func(100, 10);
printf("for test result = %d.\n", value);
func = diff;
value = func(100, 10);
printf("for test result = %d.\n", value);
func = div;
value = func(100, 10);
printf("for test result = %d.\n", value);
func = mul;
value = func(100, 10);
printf("for test result = %d.\n", value);
printf("for test function pointer with type 2 ----function pointer array.\n");
for( index = 0; index < sizeof(func_array); index++ )
{
value = func_array[index](100,10);
printf("for test result = %d.\n", value);
}
return 0;
}
int sum(int para1, int para2)
{
return para1 + para2;
}
int diff(int para1, int para2)
{
return para1 - para2;
}
int div(int para1, int para2)
{
return para1 / para2;
}
int mul(int para1, int para2)
{
return para1 * para2;
}