Der Compiler meckert!



  • Hallöchen,

    erstmal kurz was zur Aufgabenstellung.
    In der Datei charList.h sind die Datentypen und Funktionen definiert, die für die Implementierung
    einer direkten einfach verketteten Liste benötigt werden, wie Sie es in der Vorlesung kennen gelernt
    haben. Die Elemente der Liste enthalten als Information jedoch keine Zahlen, sondern Zeichen.
    Implementieren Sie die in der Datei charList.h .definierten Funktionen:

    • void appendChar(charListT* clist, char c)
    Hängt ein neues Element mit dem Zeichen c an das Ende der Liste an. Für das neue Element muss Speicher bereitgestellt werden.
    Des Weitern habe ich die Funktion ausgegliedert und mit einer Header zur main verbunden.

    Mein Problem ist, dass der Compiler mir nun beim Bündeln der Datein sagt "mainCharList.o:mainCharlist.c:(.text+0x40): undefined reference to `appendChar(list*, char).

    Wie kann ich diesen Fehler beheben? Ich denke mein Quelltext ist korrekt.
    Diese Meldung ist schon öfter aufgetreten. Sonst hat es immer gereicht, in der main die noch zu bearbeiteten Funktionenaufrufe in ein Kommentar umzuwandelen.

    Für einen Tipp wäre ich sehr dankbar.

    Mit besten Grüßen

    Wurstbrot.



  • bitte keine cross-posts ⚠



  • Sorry!



  • Undefined Reference heißt meines wissens doch das der LINKER das nicht mitgelinkt hat. Bei mir ist das dann meistens das Problem, dass die header-Datei nicht richtig eingebunden wurde. Kann aber viele Ursachen haben, dazu müsste man schon den Code sehen.

    Mfg cobra11freak



  • cobra11freak schrieb:

    Undefined Reference heißt meines wissens doch das der LINKER das nicht mitgelinkt hat. Bei mir ist das dann meistens das Problem, dass die header-Datei nicht richtig eingebunden wurde. Kann aber viele Ursachen haben, dazu müsste man schon den Code sehen.

    Mfg cobra11freak

    Richtig! Das im ersten Satz beschriebene Problem wird's sein.
    Die cpp-Datei, in der sich die Funktion befindet, ist nicht in der Projektliste (bzw. makefile).
    Falls doch, stimmen die Parameter des Headers mit dem der Routine nicht überein. Jedenfalls ist das, was ihm versprochen wurde, nicht dabei - das ist 'undefined reference'.
    Einbindungen von Headerfiles haben damit eigentlich nichts zu tun, sonst wäre er gar nicht beim Linken angekommen. (gäbe dann ein 'undefined symbol'/'undeclared identifier').



  • Bitsy schrieb:

    cobra11freak schrieb:

    Undefined Reference heißt meines wissens doch das der LINKER das nicht mitgelinkt hat. Bei mir ist das dann meistens das Problem, dass die header-Datei nicht richtig eingebunden wurde. Kann aber viele Ursachen haben, dazu müsste man schon den Code sehen.

    Mfg cobra11freak

    Richtig! Das im ersten Satz beschriebene Problem wird's sein.
    Die cpp-Datei, in der sich die Funktion befindet, ist nicht in der Projektliste (bzw. makefile).
    Falls doch, stimmen die Parameter des Headers mit dem der Routine nicht überein. Jedenfalls ist das, was ihm versprochen wurde, nicht dabei - das ist 'undefined reference'.
    Einbindungen von Headerfiles haben damit eigentlich nichts zu tun, sonst wäre er gar nicht beim Linken angekommen. (gäbe dann ein 'undefined symbol'/'undeclared identifier').

    Naja ich meinte ja auch nicht das er vergessen hat das zu includieren sondern das er in Projektoptionen das möglicherweise nicht in makefile eingetragen hat. Habe mich da vielleicht nicht ganz eindeutig geäußert.


Anmelden zum Antworten