Cómo definir una función con una dirección de entrada fija
FUN funs[16]={fun1, NULL, FUN 3}; //Supongamos que sabemos que solo hay 16 funciones como máximo, pero actualmente solo se implementan las funciones 0 y 2. , las funciones 1 y las otras 3~15 no están implementadas.
Para (...)
{
int funCode
...
if(funs [funCode]! =NULL) // Si no es NULL, implemente el número de función correspondiente.
Funs[funCode](...)//Llamar
}
-
Original, el lenguaje C no debería ser como ¡este!
Original, sus necesidades en realidad se pueden describir de la siguiente manera:
1. ¿Cómo llamar a diferentes funciones según las condiciones de entrada?
Las condiciones y funciones tienen una correspondencia uno a uno, pero la ubicación de la función es incierta; por ejemplo, otras funciones pueden pasarla.
Déjame darte un ejemplo sencillo para resolver tu problema.
typedef void (*FUN)(...); //Complete la tabla de parámetros usted mismo y devuelva el valor.
//Definir algunas funciones funcionales
void fun1(...)
{
printf(" 1 \ n ") ;
}
Función no válida 2(...)
{
printf(" 1 \ n "); p>
p>
}
....
//Tenga en cuenta que la lista de parámetros y el valor de retorno deben ser los mismos.
FUN funs[]={fun1, fun2,...}; //Coloca el puntero de función en la matriz, al igual que el área vectorial de tu C51, que almacena las direcciones de muchas funciones. . La última dirección aquí también es una dirección, pero no sabrá cuál es hasta que se compile el programa.
...//Un montón de códigos
int funCode//Se utiliza para almacenar el código de función calculado, por ejemplo, 0 significa fun1, 1 significa fun2.
...// Después de un montón de códigos súper complejos, importantes e inevitables, funCode se establece en un valor determinado. Este es en realidad mi intento de comprender un dispositivo simple y expresar una determinada función con cuidado. código diseñado.
Funs[funCode](...)// Llamar a la función (sabes que funCode debe diseñarse cuidadosamente, funCode es 0, así que llama a fun1). Por supuesto, también puedes pasar funs a una función, pero así es como usa la función pasada.