我刚刚阅读了关于C11的 Wikipedia 文章,这是 2011 年 12 月发布的 C 标准的新版本,我看到其中一个新增功能是“类型通用表达式”:
_Generic
使用关键字的类型通用表达式。例如,以下宏cbrt (x) 根据 x 的类型转换为cbrtl(x)、cbrt(x)或cbrtf(x ):#define cbrt(X) _Generic((X), long double: cbrtl, \ default: cbrt, \ float: cbrtf)(X)
这对我来说看起来很可怕——如果他们无论如何都要改变语言,为什么不像在 C++ 中那样添加函数重载呢?