1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#include <algorithm> #include <stdint.h> int main() { uint32_t a = 0xffff0000; std::swap( ((uint16_t *)&a)[0], ((uint16_t *)&a)[1] ); printf("%08X\n", a); return 0; }
1 2 3 4
cc1plus: warnings being treated as errors In function 'int main()': Line 9: warning: dereferencing type-punned pointer will break strict-aliasing rules Line 10: warning: dereferencing type-punned pointer will break strict-aliasing rules