que tienen una serie de funciones con el mismo prototipo, dicen¿Se puede usar un prototipo de función typedef en las definiciones de funciones?
int func1(int a, int b) {
// ...
}
int func2(int a, int b) {
// ...
}
// ...
Ahora, yo quiero para simplificar su definición y la declaración. Por supuesto que podría utilizar una macro de esa manera:
#define SP_FUNC(name) int name(int a, int b)
Pero me gustaría mantenerlo en C, por lo que trató de utilizar el especificador de almacenamiento typedef
para esto:
typedef int SpFunc(int a, int b);
Esto parece trabajar bien para la declaración:
SpFunc func1; // compiles
pero no para la definición:
SpFunc func1 {
// ...
}
que me da el siguiente error:
error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
¿Hay una manera de hacer esto correctamente, o es imposible? Para mi comprensión de C esto debería funcionar, pero no es así. ¿Por qué?
Nota, gcc entiende lo que estoy tratando de hacer, porque, si escribo
SpFunc func1 = { /* ... */ }
me dice
error: function 'func1' is initialized like a variable
Lo que significa que gcc entiende que SpFunc es una función tipo.
Tenía miedo de esto. Gracias por confirmar esto. ¿Hay alguna razón para esto? Me parece una característica útil. – bitmask
@bitmask: las funciones pueden compartir un typedef, pero tienen argumentos con nombres diferentes: los nombres no son parte de la firma de la función e incluso se pueden omitir si la declaración no es parte de la definición – Christoph