News for hackers. Stuff that matters.
Re:GCC Non-bugs by jakobegger on Monday March 02, 2015 @03:42AM (#9130944)
Yes. Use memcpy if you need to do this! This is especially important when you're on a platform that requires aligned pointers. For example, the following code will crash on ARM

    char bytes[5] = {0};
    float flt = *(float*)&(bytes[1]);
Using memcpy works on any platform with 4 byte floats:

    char bytes[5] = {0};
    float flt;
    memcpy(&flt, &(bytes[1]), 4);
Re:GCC Non-bugs by markrages on Monday March 02, 2015 @12:10PM (#9132929)
But the union won't crash either (the compiler will keep it aligned), the conversion compiles to no-op, and doesn't waste memory.

Embedded targets are always memory-constrained. If they aren't, you are wasting money on hardware.

Re:GCC Non-bugs by jakobegger on Monday March 02, 2015 @01:03PM (#9133263)
I was thinking about the case when you get unaligned data (eg you are reading from a file or from the network). Then you need to copy the data anyway.