https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112101
--- Comment #2 from Abdulmalek Almkainzi <malekwryyy at gmail dot com> --- Another correction, I'm sorry, its a bit hard to write hypothetical code. the macro print_func: #define print_func(f) \ printf( \ _Generic( (__typeof_arg(f, 0)){0}, \ int: #f "(int)", \ long: #f "(long)", \ float: #f "(float)", \ char*: #f "(char*)", \ default: #f "(other)") \ )