3 ms·
Hard to get this done properly in C I imagine. You're getting into UB the moment you start bit-fiddling with pointers I think.
by rocqua 7y ago
Hard to get this done properly in C I imagine. You're getting into UB the moment you start bit-fiddling with pointers I think.
- PeCaN 7y agoNah, so long as you cast to an integer (preferably uintptr_t) before fiddling with it you're fine¹ ― ¹ I think, but to be honest it's been some time since I really knew the arcane C rules and I'm not confident anymore
- vnorilo 7y agoNot UB but rather implementation defined. The compiler will not do anything weird here, but you rely on platform behavior that's not specified by the C lang spec.
- Asooka 7y agoNot UB in the slightest. You can take a pointer, cast it to uintptr_t, do whatever you want to that int, then cast it back to a pointer. It's only UB if the resulting pointer isn't valid or you cast it to the wrong type (and strict aliasing is enabled.
- rocqua 7y agoHm, good to know.