Red de conocimiento informático - Material del sitio web - Cómo definir una función con una dirección de entrada fija

Cómo definir una función con una dirección de entrada fija

Cuando dices para, puedo ver que ya conoces esas funciones, pero no sabes si se ha implementado una determinada función. Aquí hay otro ejemplo:

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>

}

....

//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.