Ich schreibe einen Logger in C++, und ich bin zu dem Teil gekommen, wo ich einen Protokolleintrag machen und in eine Datei schreiben möchte.Was bedeutet reinterpret_cast binär?
Ich habe eine LogRecord
Struktur erstellt und möchte sie serialisieren und in eine Datei im Binärmodus schreiben.
Ich habe einige Beiträge über die Serialisierung in C++, lesen und eine der Antworten enthalten diese folgenden Ausschnitt:
reinterpret_cast<char*>(&logRec)
Ich habe versucht, das Lesen über reinterpret_cast
und was es tut, aber ich konnte nicht ganz verstehen Was passiert wirklich im Hintergrund?
Von was ich verstehe, nimmt es einen Zeiger auf meine Struktur, und verwandelt es in einen Zeiger auf ein Zeichen, so dass es denkt, dass der Teil des Speichers, der meine Struktur enthält, tatsächlich eine Zeichenfolge ist, ist das wahr? Wie kann das funktionieren?
"Im Gegensatz zu static_cast, aber wie const_cast, kompiliert der Ausdruck reininterpret_cast nicht zu irgendwelchen CPU-Anweisungen. Es ist eine reine Compiler-Direktive, die den Compiler anweist, die Bitfolge (Objektdarstellung) von Ausdruck so zu behandeln, als ob sie den Typ hätte neuer Typ." source: http://en.cppreference.com/w/cpp/language/reinterpret_cast Was als nächstes passiert, hängt von deinem Code ab - behandle 'reininterpret_cast' als eine große Vorsichtsmarkierung bei der Code-Überprüfung. –
Nicht "ist eigentlich eine Zeichenkette", sondern "ist eigentlich ein Zeiger auf" char "". Strings ist nur eine der Anwendungen von 'char *'. – molbdnilo
Mögliches Duplikat von [reinterpret \ _cast] (http://stackoverflow.com/questions/4748232/reininterpret-cast) – Leon