C语言中使用数组声明类似函数

Declaring similar function using an array in C language

如何使用数组来声明类似的函数?我想节省一些 space。 下面是一个例子:

void checkEntered1(int button){
  if (entered[0] != 0){
    checkEntered2(button); 
  }
}

void checkEntered2(int button){
  if (entered[1] != 0){
    checkEntered3(button);
  }
}

void checkEntered3(int button){
  if (entered[2] != 0){
    checkEntered4(button);
  }
}

void checkEntered4(int button){
  if (entered[3] != 0){
    checkEntered5(button);
  }
}

下面的方法行得通吗?这是有效的声明吗?


for (int i=1; i<=4; i++){
  void checkEntered[i](int button){
    if (entered[i-1] != 0){
      checkEntered[i+1](button); 
    }
  }
}

我猜你需要一个函数指针数组。


void dispatch_button(int button) {
  typedef void button_handler_t(int);
  static button_handler_t* handlers[] = { checkEntered1, checkEntered2, ... };
  size_t n_handlers = sizeof handlers / sizeof handlers[0];

  for (size_t i = 0; i < n_handlers; ++i)
    if (entered[i] == 0) {
      handlers[i](button);
      return;
    }
  // error when no handler was found
}