T
hustbaer schrieb:
Tachyon schrieb:
Man kann das machen, aber das ist a)nicht portabel und b)kann man sich damit u.U. Probleme einfangen (Alignment). Das letztere ist bei gängigen Plattformen zwar meistens unproblematisch, aber trotzdem...
Was genau willst Du denn damit erreichen?
Alignment-Probleme kann man keine bekommen wenn man NACH char* castet. VON char* ist wieder ein anderes Thema...
Naja, aber wenn man was serialisiert, muss man das typischerweise auch wieder deserialisieren.
knivil schrieb:
Dann musst du doch schauen, ob der Compiler dir einige defines liefert. C++ von Haus aus, als auch Templates erfahren nie was von der Endianess. Das ist systemspezifisch und ausserhalb der Reichweite von C++. Die vorgestellte Loesung ist auch die einzige, die mir einfaellt. Leider funktioniert sie nicht bei cross compiles. Hier ist was aehnliches: klick
Jo, anders geht es wohl nicht. Ich finde es aber schade, dass der Standard keine Möglichkeiten zum Checken der Endianess vorschreibt. Viele Dinge, die aus numeric_limits<> rauspurzeln sind ja auch Implementation Defined. Und man benötigt die Information ja auch schon öfters mal. Man schaue sich z.B. mal die ganzen Netzwerkprotokolle an...