example - ¿Qué significa esta declaración C?
seo image alt tag example (5)
Me encontré con esta línea:
void (*(*x)(void (*[10])(int *)))(int *)
¿Alguien puede decirme qué es?
Un puntero a una función que tiene una matriz de 10 punteros a funciones que tiene un argumento int * y un tipo de retorno void como argumento, y devuelve un puntero a una función que tiene un argumento int * y un tipo de retorno void.
Para descomponerlo usted mismo, comience desde el paréntesis más interno y continúe su camino de salida.
-
(*[10])<---- Matriz de 10 punteros -
(*[10])(int *)<------ Matriz de 10 punteros a funciones que tiene un puntero aintcomo argumento -
(void (*[10])(int *))<------ Matriz de 10 punteros a funciones que tiene un puntero aintcomo argumento y devuelvevoid -
(*x)(void (*[10])(int *))<-------xes un puntero a una función que tiene como argumento (una matriz de 10 punteros a funciones que tiene un puntero a int como argumento y devuelvevoid)
.....
Me detuve a mitad de camino, pero espero que eso ayude.
cdecl es muy útil para este tipo de cosas. Dice:
declarar x como puntero a la función (matriz 10 del puntero a la función (puntero a int) devolviendo el vacío) retornando el puntero a la función (puntero a int) volviendo vacío