Hallo! Gibt es eigentlich ein Möglichkeit, einen Zeiger in einen int umzuwandeln, die keine Warning beim Kompilieren erzeugt? Ich habs zur Zeit so gemacht: long int x = (long int) Zeiger; Normalerweise casted man natürlich nicht zwischen Pointer und Int. Das soll auch nur als Debugausgabe benutzt werden.
Genau so. Wenn du Lust dazu hast, kannst du auch einen reinterpret_cast nehmen, aber das ist das Gleiche in gruen...
Leider produziert die angegebene Zeile eine Warnung. Und da das ganze ein open source Projekt ist, kommen regelmäßig Kommantare und Nachfragen wegen der Warnung rein. Mit nem reinterpret_cast<long int>(Zeiger) wir auch eine Warnung produziert. Gibts da kein Weg, das der Compiler da nicht meckert?
Und wozu brauchst Du soetwas? Ein Trick wäre übrigens die Ausnutzung von Pointerarithmetik: long int x = (void *) Zeiger - (void *) 0;
Warum konvertierst Du den Pointer in einen Int? Mit gnu printf kann man auch Pointerwerte ausgeben, mit dem Formatkennzeichen "p".
Gehen tut das schon, siehste ja. Aber steig vorher lieber nochmal in die Theorie ein: Nirgendwo steht geschrieben, dass ein Zeiger unbedingt eine Zahl sein muss. Es obliegt einzig und allein der Rechnerarchitektur, wie Zeiger umgesetzt werden und wie dann der *-Typ in C unter der Haube aussieht! Ein Beispiel wäre z.B. einen Zeiger mit zwei Zahlen darzustellen (Segment:Offset). Also Vorsicht... warum sollte man einen Zeiger überhaupt in eine Zahl umwandeln?
Schon mal überlegt das die Warnung nicht umsonst ist? Ich glaube bei Windows mit 64bit ist int 32bit und ein Zeiger ist 64bit - das geht dann eh nicht mehr.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.