favor explicar este tipo de firma: void (*signal(int signo, void *(func)(int)))(int)
Explicar void (* Señal (int signo, void * (func) (int))) (int)
Respuesta
El tipo de firma de la función signal
es un poco más clara cuando una typedef se utiliza para los punteros de función que se contagian entre sí:
typedef void (*sighandler_t)(int);
sighandler_t signal(int signo, sighandler_t func);
sighandler_t
es un puntero a una función que toma un parámetro int
y no devuelve nada. La función signal
toma dicho puntero de función como su segundo parámetro. También devuelve un puntero a función de ese tipo.
Las declaraciones C deben leerse de adentro hacia afuera. La parte difícil con declaraciones de funciones complejas es averiguar cuál es el declarador más interno (por dónde empezar). Generalmente es el primer identificador que no es un identificador de tipo. Así que en este caso:
void (*signal(int signo, void *(func)(int)))(int)
la declarador es signal
. Dentro del paréntesis, los sufijos son de mayor precedencia que los prefijos, por lo que signal
es una función que toma dos argumentos (la parte (int signo, void *(func)(int))
), que devuelve un puntero (el prefijo *
) a una función que toma un único int arg ((int)
en el extremo), y devolver void
- 1. ¿Cuál es el significado de este fragmento de código? void (* signal (int sig, void (* func) (int))) (int);
- 2. sizeof (int) == sizeof (void *)?
- 3. ¿Diferencia entre void main e int main?
- 4. ¿Qué significa convertir int a void * o viceversa?
- 5. void Func sin argumentos
- 6. problema joda nueva DateTime (int, int, int, int, int, int)
- 7. Int Int Int y volver
- 8. tipo de int * (*) (* int, int * (*)())
- 9. Tratando de entender el ejemplo de patrón de estrategia de wikipedia usando la nueva Func <int, int, int>
- 10. 32bit int * 32bit int = 64 bit int?
- 11. const int = int const?
- 12. int vs const int &
- 13. int num = * (int *) número; ¿Qué hace esto?
- 14. Extendiendo AsyncTask <Void, Void, Void>
- 15. ¿Cómo convierto int? en int
- 16. int ** vs int [FILAS] [COLS]
- 17. Compare int y unsigned int
- 18. C++ uint, unsigned int, int
- 19. Cómo convertir int * a int
- 20. Explicación de int? vs int
- 21. conversión de int a int * a continuación, volver a int
- 22. Cómo escribir un literal int corto sin signo?
- 23. Diferencia entre int sin signo y sin signo en C++
- 24. punteros void en C++
- 25. Error de Java: java.lang.IllegalArgumentException: Señal ya utilizada por VM: INT
- 26. Java int concurrencia ++ int equivalente a AtomicInteger.incrementAndGet()?
- 27. Mysql middle int vs. int performance
- 28. php convertir int formateado a int
- 29. Diferencia entre int [] array y int array []
- 30. convertir int color a int componentes
¿Qué es esto (int) cosa al final? –
¿Por qué se votó mi pregunta? –
Error de sintaxis: http://www.cdecl.org/ ¿Cuál es la declaración real? –