void printf (string fmt, ...) = #0; # define M_PI 3.14159265358979323846 union { double d; int i[2]; } type_pun; int alias_printf (string fmt, ...); int test_alias () { int fail = 0; type_pun.d = M_PI; fail = alias_printf ("%g %08x%08x\n", type_pun.d, type_pun.i[1], type_pun.i[0]); return fail; } int alias_printf (string fmt, ...) { int fail = 0; // this will fail on big-endian systems fail = (@args.list[2].int_val != 0x54442d18 || @args.list[1].int_val != 0x400921fb); printf ("%.17g %08x%08x\n", @args.list[0].double_val, @args.list[2].int_val, @args.list[1].int_val); return fail; } int main () { int fail = 0; fail |= test_alias (); return fail; }