He encontrado el siguiente código, y como principiante en C, vine aquí por su ayuda.¿Declarar una función dentro de una función?
Esta función es de una implementación de una cola.
Bool queuePut(Queue *q, char c)
{
void beep();
if (queueFull(q))
{
beep();
return false;
}
//do stuff
return true;
}
Por lo tanto, estoy recibiendo un error extraño con gcc en el pitido nulo(). ¿Puede alguien por favor explicarme qué es esto, declarar una función dentro de una función? ¿O es el sonido vacío() simplemente fuera de lugar? Me dieron este código y siempre existe la posibilidad de que no sea correcto.
Editar: El error que estoy recibiendo:
c:/djgpp/tmp/src/ccrjtmBh.o:queue.c:(.text+0x50): undefined reference to
'_beep'
collect 2: ld returned 1 exit status.
¿Es esto un error al vincular?
¿Qué error? ___ – kennytm
Sí, es un error de enlace. No solo tiene que declarar cada función que usa, sino que también debe definirlas todas o vincularlas con las bibliotecas que definen las funciones. Como sus bibliotecas no definen 'beep()', debe hacerlo. –
Y, como regla general, las funciones deben declararse en los encabezados y los encabezados utilizados; declarar una función dentro de otra como esa es una receta para problemas de mantenimiento posteriores. –