我刚刚读了维基百科的文章C11 http://en.wikipedia.org/wiki/C11_%28C_standard_revision%29,2011年12月发布的新版本C标准,我看到新增的功能之一是“类型泛型表达式”:
类型通用表达式使用_Generic
关键词。例如,
跟随宏cbrt(x)翻译为cbrtl(x), cbrt(x) or cbrtf(x)取决于类型x:
#define cbrt(X) _Generic((X), long double: cbrtl, \
default: cbrt, \
float: cbrtf)(X)
这对我来说看起来非常可怕 - 如果他们无论如何都要改变语言,为什么不像 C++ 那样添加函数重载呢?
C 有一个用于外部符号的命名空间,并应用 ODR(一个定义规则),使得两个extern
两个翻译单元中具有相同名称的对象必须具有相同的定义。
尽管可以创建支持重载的 C ABI,但 C 的主要优势在于其 ABI 简单性。在几乎所有平台上,“”ABI 都是 C ABI,无论源语言是什么,它都会在执行中发挥一定作用。如果符号必须包含类型信息,则该信息将会丢失。
TGE(由库使用)只是名称修改的手动操作版本。它做了(或者将会做,在可能很遥远的未来的某个时候)它需要做的工作,以允许typedef
用于控制数学密集型内部循环生成的声明。需要 C++ 等语言功能的人应该移植到 C++。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)