lvalue als unärer ‘&’-Operand erforderlich

Lesezeit: 1 Minute

Benutzer-Avatar
Indradhanush Gupta

Ich habe folgende Codezeilen:

#define PORT 9987

und

char *ptr = (char *)&PORT;

Dies scheint in meinem Servercode zu funktionieren. Aber wie ich es in meinen Client-Code geschrieben habe, gibt es diese Fehlermeldung:

lvalue required as unary ‘&’ operand

Was mache ich falsch?

  • Es bedeutet, dass Sie die Adresse einer Nummer nicht nehmen können.

    – Chris

    24. Mai 2013 um 3:48 Uhr

  • Ich bin mir ziemlich sicher, dass es auch in Ihrem Servercode nicht funktioniert – dort muss etwas anders sein.

    – Karl Norum

    24. Mai 2013 um 3:50 Uhr

  • String-Literale sind Lvalues, Integer-Literale sind es nicht. In diesem Fall ist jedoch beides falsch.

    – Karl Norum

    24. Mai 2013 um 4:21 Uhr


  • Es hat nirgendwo funktioniert. Es ist falsch. Du liegst falsch.

    – Benutzer207421

    24. Mai 2013 um 11:14 Uhr

  • @IndradhanushGupta: Die Anführungszeichen machen es zu einem String-Literal – also weisen Sie einen statischen String zu und erhalten die Adresse davon.

    – Chris Dodd

    24. Mai 2013 um 23:44 Uhr

C-Präprozessor ist hier im Spiel. Nachdem der Code vorverarbeitet wurde, sieht er so aus.

char *ptr = (char *)&9987;

Adresse von (&) Operator kann auf eine Variable und nicht auf ein Literal angewendet werden.

Die Präprozessormakros haben keinen Speicher und zur Kompilierzeit wird das Makro durch den Wert ersetzt. Also eigentlich passiert hier was char *ptr = (char *)&9987;, was nicht möglich ist.

  • Ich denke, es ist vielleicht kein #define.

    – Achil

    24. Mai 2013 um 4:17 Uhr

  • @IndradhanushGupta 9987 ist kein Wert –Lies hier

    – Grijesh Chauhan

    24. Mai 2013 um 4:53 Uhr

  • ja Konstanten sind nicht lvalue. Aber für die &-Operation ist lvalue erforderlich.

    – Achil

    24. Mai 2013 um 4:56 Uhr

1283300cookie-checklvalue als unärer ‘&’-Operand erforderlich

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy