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. int vs const int &
- 12. const int = int const?
- 13. int num = * (int *) número; ¿Qué hace esto?
- 14. Extendiendo AsyncTask <Void, Void, Void>
- 15. int ** vs int [FILAS] [COLS]
- 16. C++ uint, unsigned int, int
- 17. Compare int y unsigned int
- 18. Explicación de int? vs int
- 19. Cómo convertir int * a int
- 20. ¿Cómo convierto int? en int
- 21. conversión de int a int * a continuación, volver a int
- 22. Diferencia entre int sin signo y sin signo en C++
- 23. Cómo escribir un literal int corto sin signo?
- 24. punteros void en C++
- 25. Error de Java: java.lang.IllegalArgumentException: Señal ya utilizada por VM: INT
- 26. C++ - int main (int argc, char ** argv)
- 27. Mysql middle int vs. int performance
- 28. Java int concurrencia ++ int equivalente a AtomicInteger.incrementAndGet()?
- 29. Int Clave principal: excede el rango int.
- 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? –