我理解单参数函数的C11泛型,如下所示:(从这里)
#define acos(X) _Generic((X), \
long double complex: cacosl, \
double complex: cacos, \
float complex: cacosf, \
long double: acosl, \
float: acosf, \
default: acos \
)(X)
Run Code Online (Sandbox Code Playgroud)
但是,对于具有两个参数的函数来说似乎很痛苦,你需要嵌套调用_Generic,这真的很难看; 摘自同一篇博客:
#define pow(x, y) _Generic((x), \
long double complex: cpowl, \
double complex: _Generic((y), \
long double complex: cpowl, \
default: cpow), \
float complex: _Generic((y), \
long double complex: cpowl, \
double complex: cpow, \
default: cpowf), \
long double: _Generic((y), \
long double complex: …Run Code Online (Sandbox Code Playgroud)