Sporadische Probleme beim kompilieren



  • Hallo zusammen,

    ich sitze mal wieder an einer Aufgabe für das Studium und hab ein etwas seltsames Verhalten:

    Ich benutze 'Kate' unter SuSE Linux 10 als Editor.

    Ich öffne meinen Quellcode der main-Funktion. Dieser lässt sich wunderbar per 'make' compilieren (makefile selbst geschrieben).
    Nun gehe ich in den Quellcode und füge eine Leerzeile ein, anschliessend bekomme ich beim make-Aufruf folgende Fehlermeldungen:

    u28.c In function 'main':
    u28.c:38: warning: implicit declaration of function 'Standardliste'

    usw.

    Das ganze betrifft 3 Funktionen.

    Wenn ich nun die Änderung (Leerzeile) rückgängig mache kommen die Fehler immer noch. Wenn ich nun eine andere Datei öffne und dann wieder zurückgehe zur main, funktioniert das compilieren auf einmal ohne Fehler bzw. Warnung.

    Hat jemand eine Idee woran das liegen kann?? Bin echt mit dem Latein am Ende.

    Ausserdem noch folgende Sache, vielleicht übersehe ich was:

    void ListeAllerFil (SFil* aflLstStart)
    {
       bla bla bla
    }
    

    erzeugt die Fehlermeldung:
    u28teil.c:1: error: expected ')' before '*' token

    Im header ist das ganze korrekt implementiert, weiss auch hier nich woher das kommt.

    Gruss,
    Lalas



  • Schau Dir mal genau den Code vorher an. Typischer Folgefehler.



  • Danke für die Antwort.

    Also die ursprüngliche Version funktioniert einwandfrei, öffnen --> compilieren --> ausführen --> OK

    Hier mal was ich mache (auszugsweise):

    ursprünglicher code:

    switch (cWahl)
    		{
    			case 'a':
    				Standardliste (&aflLstStart);		
    			break;
    
    			case 'b': 
    				EingabeFilLst (&aflLstStart);
    			break;
    
    			case 'c':
    				AusgabeFilLst (aflLstStart);
    			break;
    
    			case 'd':
    				FilListeBinInDatei (aflLstStart);
    			break;
    

    Nun möchte ich nur eine weiter case-Funktion dazwischen einbauen, also mache ich folgendes:

    switch (cWahl)
    		{
    			case 'a':
    				Standardliste (&aflLstStart);		
    			break;
    
    			case 'b': 
    				EingabeFilLst (&aflLstStart);
    			break;
    
    			case 'c':
    				AusgabeFilLst (aflLstStart);
    			break;
    
    // ---------> HIER NUR EINE LEERZEILE EINGEFÜGT UND NÄCHSTE CASE REINGESCHRIEBEN
    
    			case 'd':
    				FilListeBinInDatei (aflLstStart);
    			break;
    

    An der markierten Stelle schreibe ich das nächste case.... rein und es kommt diese Warnung.
    Wenn ich nun die Änderungen rückgängig mache, treten die Warnmeldungen immer noch auf.
    Erst nach dem Öffnen einer anderen Datei lässt es sich wieder compilieren.

    Ansonsten ist mir wegen der andern Fehlermeldung was aufgefallen:

    #include"f28.h"
    #include "f28.h"
    

    Die beiden Zeilen müssten doch identisch sein ??

    Ich habe das Leerzeichen rausgelöscht und der Fehler ist verschwunden



  • Die Fehlermeldung

    u28teil.c:1: error: expected ')' before '*' token

    heißt vermutlich: Fehler in Zeile 1. Und da steht Dein #include.
    Ich würde mir als nächstes mal einen Hexdump des Quelltextes anschauen.
    Der Code dürfte ok sein, den Editor kenne ich nicht.

    Vielleicht stimmt etwas nicht im Headerfile.



  • Also ich (glaube) die Antwort zu haben;

    Ich arbeite in einer VirtualBox-Umgebung und habe diese mal neu gestartet. Und siehe das, es funktioniert auf einmal.
    Denke mal da war irgendein Datenschrott irgendwo hängengeblieben.

    Sowas ähnliches hatte ich schonmal vor ein paar Monaten. Habe damals dem Dozenten meinen Quellcode gemailt, mit dem Hinweis das ich keinen Fehler finde. Seine Antwort damals: "Wieso Herr Mustermann, es funktioniert doch alles"

    Aber Danke für die Hilfe.

    Gruss,
    Lalas


Log in to reply