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 aint
como argumento -
(void (*[10])(int *))
<------ Matriz de 10 punteros a funciones que tiene un puntero aint
como argumento y devuelvevoid
-
(*x)(void (*[10])(int *))
<-------x
es 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