frage zu compile warning



  • hey, dieser code:

    if (file_p1 = (open(buffer,O_RDWR,0664) == -1))
    

    gibt diese warnung:

    warning: suggest parentheses around assignment used as truth value
    

    egal wie ich die klammern setze, die warnung bleibt.
    warnings sind ja keine errors, aber ich wollte mir nochmal experten-feedback holen, ob die funktion das machen wird, was ich offensichtlich will, dass sie macht.

    oder kann ich die klammern doch irgendwie so setzen, dass keine warning kommt?

    danke 🙂



  • Probier mal :

    file_p1 = open(buffer,O_RDWR,0664);   
    
        if (file_p1 == -1)
    

    😉



  • Nur noch mal als Hinweis:
    deine Klammerung ist völlig falsch, daher auch die berechtigte Warnung.
    Wenn, dann müßte es so aussehen:

    if ((file_p1 = open(buffer,O_RDWR,0664)) == -1)
    

    Aber besser ist die Trennung von Zuweisung und Abfrage (s. obiger Post).



  • deine Klammerung ist völlig falsch, daher auch die berechtigte Warnung.

    Ein Widerspruch in sich, denn dann wär's keine Warnung sondern ein Fehler. Falsch ist, was er sich erwartet hat 😉 .

    Aber besser ist die Trennung von Zuweisung und Abfrage

    Bitte nicht dogmatisch werden. Besser? Who knows? Klarer.
    Daß das Problem überschätzt wird, zeigt uns ja schon der Compiler, der entsprechende Warnungen ausgibt.

    @hdi: Das Ergebnis von open() ist nämlich afaik immer positiv, folglich ist deine erste Zeile alternative Formulierung für:

    if (open(...) == -1)
        file_p1 = 1;
    else
        file_p1 = 0;
    

    Warum benutzt du nicht fopen? open ist ein Unix-Aufruf, der auf anderen Systemen vielleicht nicht implementiert ist; logischerweise ist open auch nicht ANSI-C-konform.

    Schlaf dich aus! 😉



  • cheopz schrieb:

    Aber besser ist die Trennung von Zuweisung und Abfrage

    Bitte nicht dogmatisch werden. Besser? Who knows? Klarer.

    Klarer ist, ganz pragmatisch gesehen, auch besser.



  • Klarer ist, ganz pragmatisch gesehen, auch besser.

    Sir, jawohl, Sir!



  • 😃



  • cheopz schrieb:

    deine Klammerung ist völlig falsch, daher auch die berechtigte Warnung.

    Ein Widerspruch in sich, denn dann wär's keine Warnung sondern ein Fehler. Falsch ist, was er sich erwartet hat 😉 .

    nicht ganz widersprüchlich, denn syntaktisch mag das ja korrekt sein (der Compiler schluckt es ja auch) aber sematisch ist "falsch" oder besser gesagt verwirrend.

    Warum benutzt du nicht fopen? open ist ein Unix-Aufruf, der auf anderen Systemen vielleicht nicht implementiert ist; logischerweise ist open auch nicht ANSI-C-konform.

    vergiss es, das hab ich ihm schon mehrmal gesagt, er will nur open benutzen 🙄

    @hdi: das würde ich mir ans Herz legen

    Aber besser ist die Trennung von Zuweisung und Abfrage (s. obiger Post).

    das macht den Code viel lesbarer.


Anmelden zum Antworten