If a selection on multiple arguments for a type generic expression is wanted, and all types in question are arithmetic types, an easy way to avoid nested _Generic expressions is to use addition of the parameters in the controlling expression:
int max_int(int, int);
unsigned max_unsigned(unsigned, ...