unverständliche Compilerwarnung



  • Und wie umgeht man dann in diesem Fall die Warnung?



  • Ingo schrieb:

    Der Compiler mahnt aber in Form einer Warnung Folgendes an:

    [C++ Warnung] Unit1.cpp(310): W8004 'counter' wurde ein Wert zugewiesen, der nie verwendet wird.

    Aber ... das ist doch gar nicht wahr?!?

    tja, selbst compiler haben kleine bugs



  • Ingo schrieb:

    Und wie umgeht man dann in diesem Fall die Warnung?

    Im Menu Projekt->Optionen->Compiler->Warnungen->Ausgewählte.
    Habe nicht nachgeschaut ob sich diese Warnung ausschalten lässt.



  • Ingo schrieb:

    Der Compiler mahnt aber in Form einer Warnung Folgendes an:

    [C++ Warnung] Unit1.cpp(310): W8004 'counter' wurde ein Wert zugewiesen, der nie verwendet wird.

    Aber ... das ist doch gar nicht wahr?!? 😕

    doch, das ist wahr. Du erhöhst zwar weiter unten den counter, Du benutzt diesen Wert aber nicht. Die Warnung ist weg, wenn Du den Wert von counter z.B. einer anderen Variable zuweist oder diesen Wert anzeigen lässt. Die Warnung des Compilers ist völlig ok und kein Fehler des Compilers.
    Wenn Du die Warnung weg haben willst, schreib einfach:

    counter;
    

    Ich würde die Warnung auf keinen Fall in den Optionen abschalten, sie kann Dir manche langwierige Fehlersuche ersparen.

    Grüße,
    Jochen



  • Die Erhöhung einer Variable entspricht also nicht dem Benutzen einer Variable.
    Tja, wenn das so ist, muss ich das so hinnehmen. So richtig nachvollziehen kann ich das nicht, denn mein gesunder Menschenverstand sagt mir das Gegenteil.
    Danke aber für die Antworten.



  • Ingo schrieb:

    Tja, wenn das so ist, muss ich das so hinnehmen. So richtig nachvollziehen kann ich das nicht, denn mein gesunder Menschenverstand sagt mir das Gegenteil.

    *g* was hat der gesunde Menschenverstand mit dem Verstand eines Compilers zu tun? 😃 😉

    Lies die Warnung nocheinmal ganz genau:
    "W8004 'counter' wurde ein Wert zugewiesen, der nie verwendet wird."

    Die Betonung liegt auf "...ein Wert zugewiesen, der nie verwendet wird."
    Der Compiler meckert dass der Wert nicht verwendet wird, nicht dass counter nicht verwendet wird.
    counter erhält bei Dir den Wert 2, der Compiler sieht nirgends so etwas in der Art xyz = counter.

    Beispiel:

    int counter;
    counter = 3; //hier kommt eine Warnung.
    counter = 4;
    counter;
    

    Du erhältst hier eine Warnung, weil der Wert 3 nie verwendet wird.

    Jochen



  • Und doch wird der Wert in seinem Beispiel in dieser ZEile:

    StringGrid1->Cells[j+1][i+1] = Memo2->Lines->Strings[counter++];
    

    verwendet. (Stichwort Post-Increment)

    -junix



  • @JoKo: das ergibt keinen Sinn.

    bei [counter++] wird der Wert sehr wohl verwendet.

    Aber vielleicht ist der Compiler ja oberschlau: "Im allerletzten Schleifendurchlauf wird der Wert erhöht, aber das Ergebnis nicht mehr verwendet. was das bloß soll?"

    (kannst du prbnieren, ob mit counter=1 / ++counter die gleiche Warnungkommt? Würde mich mal interessieren...)



  • Irgendwie hat der Compiler, so scheints mir, eine Wanze.
    Die Warnung wird nicht immer ausgegeben. Mal ja, mal nein. Fahre Rechner neu hoch, compiliere -> Warnung da. Nächstes Mal -> keine Warnung.

    Ich gehe langsam davon aus, dass ein Fehlverhalten des Compilers vorliegt. Momentan wird die Warnung mal wieder nicht angezeigt, auch nicht, @peterchen, nach dem von dir nachgefragten Umschreiben.



  • Hängt vermutlich damit zusammen, dass inkrementell kompiliert wird?

    -junix


Anmelden zum Antworten