Ich bin auf den folgenden Code gestoßen, und da ich ein C-Anfänger bin, bin ich für deine Hilfe hierher gekommen.Eine Funktion in einer Funktion deklarieren?
Diese Funktion stammt aus der Implementierung einer Queue.
Bool queuePut(Queue *q, char c)
{
void beep();
if (queueFull(q))
{
beep();
return false;
}
//do stuff
return true;
}
Also, ich bekomme einen seltsamen Fehler mit GCC auf den void beep(). Kann mir bitte jemand erklären, was das ist, eine Funktion in einer Funktion deklarieren. Oder ist es der leere Piepton() einfach fehl am Platz? Ich habe diesen Code bekommen und es besteht immer die Möglichkeit, dass es nicht korrekt ist.
Edit: Der Fehler Ich erhalte:
c:/djgpp/tmp/src/ccrjtmBh.o:queue.c:(.text+0x50): undefined reference to
'_beep'
collect 2: ld returned 1 exit status.
Ist das ein Verbindungsfehler?
Welcher Fehler? ___ – kennytm
Ja, es ist ein Verknüpfungsfehler. Sie müssen nicht nur jede Funktion, die Sie verwenden, deklarieren - Sie müssen sie auch alle definieren oder mit Bibliotheken verknüpfen, die die Funktionen definieren. Da Ihre Bibliotheken 'beep()' nicht definieren, müssen Sie dies tun. –
Und in der Regel sollten Funktionen in Kopfzeilen und die verwendeten Header deklariert werden; eine Funktion in einem anderen zu deklarieren, ist ein Rezept für spätere Wartungsprobleme. –