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.
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