把函数指针放入数组

How define an array of function pointers in C

http://stackoverflow.com/questions/5488608/how-define-an-array-of-function-pointers-in-c


#include <stdio.h>
#include <string.h>


void function_a(void) { printf("Function A\n"); }
void function_b(void) { printf("Function B\n"); }
void function_c(void) { printf("Function C\n"); }
void function_d(void) { printf("Function D\n"); }
void function_e(void) { printf("Function E\n"); }


const static struct {
  const char *name;
  void (*func)(void);
} function_map [] = {
  { "function_a", function_a },
  { "function_b", function_b },
  { "function_c", function_c },
  { "function_d", function_d },
  { "function_e", function_e },
};


int call_function(const char *name)
{
  int i;


  for (i = 0; i < (sizeof(function_map) / sizeof(function_map[0])); i++) {
    if (!strcmp(function_map[i].name, name) && function_map[i].func) {
      function_map[i].func();
      return 0;
    }
  }


  return -1;
}


int main()
{
  call_function("function_a");
  call_function("function_c");
  call_function("function_e");
}

你可能感兴趣的:(把函数指针放入数组)