uint32_t u32 = 0;
uint16_t u16[2];
static_assert(sizeof(u32) == sizeof(u16), "");
memcpy(u16, &u32, sizeof(u32)); // defined?
// if defined, how to we access the data from here on?
Ist dieses definierte Verhalten? Und wenn ja, welche Art von Zeiger können wir verwenden, um auf die Zieldaten nach dem memcpy
zuzugreifen?memcpy von einem Typ zu einem anderen Typ. Wie gelangen wir später zum Ziel?
Müssen wir verwenden uint16_t*
, denn das ist geeignet für die erklärt Art von u16
?
Oder müssen wir uint32_t*
verwenden, weil der Typ der Quelldaten (die Quelldaten kopiert von memcpy
) uint_32
ist?
(persönlich interessiert in C++ 11/C++ 14. Aber eine Diskussion verwandter Sprachen wie C auch interessant wäre.)
Ist es kompilieren? – wally
Es tut jetzt :-) (Ich hatte ein '&' und einen anderen Tippfehler vergessen) –
Versuchen Sie, die Endianz Ihrer CPU herauszufinden? –