Passing integers in SDL_UserEvent

I’m sure I’m not alone in sometimes passing integer (or even character) data in the data1 and data2 members of the SDL_UserEvent structure. Since these members are declared as void* type I’ve no doubt that a pedant would say that using them for anything other than pointers is a sin, but for passing a simple int this seems overkill and not without its own risks.

Accepting that it’s not the ‘proper’ way to do it, what’s the safest way of casting an int to a void* and back that is (a) guaranteed to return the original value on both 32-bit and 64-bit builds and (b) won’t provoke any compiler warnings? I’m currently using (void*)(intptr_t) but with little confidence that it’s a safe method.

Richard.

and then (int)(intptr_t) to get the int back looks good to me.
That’s how they do it in Gnome: https://developer.gnome.org/glib/stable/glib-Type-Conversion-Macros.html .

1 Like