#include #include union [[gnu::transparent_union]] un { void *ptr; intptr_t i; }; void pasi(union un v) { printf("%p\n", v.ptr); } int main(int argc, char *argv[]) { pasi((intptr_t)0x42); pasi((void *)&pasi); }