cast auf linker Seite eienr Zuweisung?



  • Hallo zusammen,

    in einem Programm hab ich folgenden Ausdruck gefunden:

    void *object;
    
    switch( type )
    {
    	case MAIL: ((OL_EMAIL*)object) = create_ol_email();
    				break;
    
    	case APPOINT: ((OL_APPOINT*)object) = create_ol_appoint();
    					break;
    
    	default:
    		return;	               
    
    }
    

    Ist so ein Cast auf der linken Seite der Zuweisung erlaubt nach ANSI Standard?
    Ich meine nicht.

    Auf einem alten HP-UX 11.0 gibts dann auch prompt folgenden Error:

    cc: "scr.c", line 882: warning 524: Cast (non-lvalue) appears on left-hand side of assignment.
    cc: "scr.c", line 882: error 1549: Modifiable lvalue required for assignment operator.
    cc: "scr.c", line 942: warning 524: Cast (non-lvalue) appears on left-hand side of assignment.
    cc: "scr.c", line 942: error 1549: Modifiable lvalue required for assignment operator.
    

    Ich würde nun eigentlich den Typecast weglassen, da ich ihn für überflüssig erachte. Bei der weiteren Verwendung von object würde ich natürlich in den konkreten Datentyp casten.



  • Du hast recht, das geht so nicht, der Cast ist kein lvalue.



  • edit: Hat sich erledigt.



  • Bashar schrieb:

    edit: Hat sich erledigt.

    Ich weiß, war kompletter Schwachsinn was ich zuerst geschrieben hab 🤡



  • Ja das es so nicht ging, hatte ich ja bei einem cc auf der HP-UX Maschine gemerkt.
    Der gcc frißt es jedenfalls, auf anderen Systemen.

    Also, ist meine letzte Vorgehensweise korrekt?

    P.S.: Ich hab leider die Beiträge vor eurem Edit nicht gelesen...



  • caster void schrieb:

    Also, ist meine letzte Vorgehensweise korrekt?

    Du meinst, die Casts wegzulassen? Ja.

    P.S.: Ich hab leider die Beiträge vor eurem Edit nicht gelesen...

    Gut so. 🙂



  • danke euch 😉


Anmelden zum Antworten