Viele Bäume - wo ist der Wald (fortgeschrittener Anfänger)



  • Der Fehler kann auch in den 1480 Zeilen vorher sein.
    Wo kommt denn das PI her?
    (Bitte Kopie aus dem Quelltext mit Copy&Paste)



  • Hallo Dirk,

    das PI habe ich am Anfang deklariert.

    #define PI 3.14159265 //Pi number
    

    Wie gesagt, der Quellcode ist über 2000 Zeile lang. Ich kann das nicht alles kopieren.
    Komisch doch nur, dass die Fehlermeldung verschwindet, wenn ich in der Funktion danach eine Variable deklariere. Auch verschwindet der Fehler, wenn ich einmal das %8d lösche und fpQuad->P4 wegnehme.
    fpQuad->P4 beinhaltet allerdings einen korrekten Wert, was ich mit

    printf"%i\n",fpQuad->P4);
    

    getestet habe.

    Der Quelltext, der Euch vorliegt ist direkt aus dem Programm mit Copy&Paste entnommen.



  • %d und %i stehen für (signed) int und haben bei printf die gleiche Funktion.
    Der Formatspecifier für unsigned long bei printf ist %lu.



  • Sogar das hier funktioniert (anstatt des Codes, bei dem der Fehler auftritt):

    //Output Quad information
    if (nQuad > 0){
         for (i=0; i<nQuad; i++){
    			printf("|%8d|%s|%8d|%8d|%8d|%8d|", fpQuad->number, "  Quad  ", fpQuad->family, fpQuad->P1, fpQuad->P2, fpQuad->P3);
    			printf("%8d|\n", fpQuad->P4);
    			fpQuad++;
    		}
    	}
    

    Hab also einfach die printf-Anweisung auf zwei Zeilen erweiter...



  • Und was du als Deklaration bezeichnest ist in eine Definition.

    Es kann auch sein, dass sich irgendwo in deinem Code ein Steuerzeichen versteckt hat.



  • Danke, mit %8lu funktioniert es.

    Ich verstehe es nicht. Ich habe diese Funktion vor etwa zwei Monaten geschrieben - und sie hat immer gut funktioniert.

    Aber ok, der Computer ist kein Zufallsgenerator... 🙂



  • Das hätte dir der Compiler als Warnung melden sollen.
    Wenn nicht, schalte den Warnlevel höher.

    Oder wechsel auf einen aktuelleren Compiler.



  • Ich nutze lcc32.

    Was ist denn aktuell? Ich habe auch Visual Studio C++, aber ich programmiere nur C und das Programm hat mich einfach erschlagen. Will einfach nur schnelle Kommandozeilenprogramme schreiben.


  • Mod

    CJens schrieb:

    Ich nutze lcc32.

    Was ist denn aktuell?

    Kommt drauf an, welche Version des ICC. Wahrscheinlich hast du gar keine Warnungen aktiviert, der ICC warnt sonst nämlich sehr, sehr viel (meiner Meinung nach sogar zu viel), das hättest du sicher schon bemerkt.



  • SeppJ schrieb:

    CJens schrieb:

    Ich nutze lcc32.

    Was ist denn aktuell?

    Kommt drauf an, welche Version des ICC. Wahrscheinlich hast du gar keine Warnungen aktiviert, der ICC warnt sonst nämlich sehr, sehr viel (meiner Meinung nach sogar zu viel), das hättest du sicher schon bemerkt.

    Vorsicht, beim lcc handelt es sich nicht um den Intel C-Compiler, sondern um den hier, beschrieben im Buch A Retargetable C Compiler: Design and Implementation. Da er explizit von lcc32 spricht, vermute ich, dass er den Fork lcc-win32 mit mitgelieferter Entwicklungsumgebung von Jacob Navia meint.

    http://www.cs.virginia.edu/~lcc-win32/


Anmelden zum Antworten