"#ifdef __OBJC__\n" \
"#define _z_objc_map ,id: \"%s\", Class: \"%s\", SEL: \"%s\"\n" \
"#define _z_objc_arg_map(x) ,id: [(id)(x) description].UTF8String, Class: " \
"class_getName((Class)(x)), SEL: sel_getName((SEL)(x))\n" \
"#else\n" \
"#define _z_objc_map\n" \
"#define _z_objc_arg_map(x)\n" \
"#endif\n" \
"\n" \
"#define _z_str(x) _Generic((x), _Bool: \"%s\", char: \"%c\", " \
"signed char: \"%c\", unsigned char: \"%u\", short: \"%d\", " \
"unsigned short: \"%u\", int: \"%d\", unsigned int: \"%u\", " \
"long: \"%ld\", unsigned long: \"%lu\", long long: \"%lld\", " \
"unsigned long long: \"%llu\", float: \"%f\", double: \"%f\", " \
"char*: \"%s\", void*: \"%p\" _z_objc_map)\n"