为什么反射不是 C 中的一个突出特性
虽然反射在许多编程语言中是一个有价值的工具,但它在 C 中的缺失一直是一个争论的话题。以下是 C 语言委员会尚未实现成熟反射的几个原因:
1.复杂性和工作量:
在 C 中实现反射需要付出巨大的努力,并且可能会带来意想不到的后果。委员会优先考虑了其他被认为更重要的功能。
2.运行时开销:
与 Java 等虚拟机语言不同,C 不在虚拟机上运行。合并反射会引入运行时开销,这可能会损害该语言著名的性能。
3. C 的有限优势:
C 复杂的模板元编程功能使开发人员能够实现许多与反射相同的目标。这减少了对专用反射机制的需求。
在 C 中实现反射的挑战
尽管存在反对反射的争论,但如果在 C 中实现反射,将会出现一些挑战:
1。保留类定义:
C 允许进行积极的优化,如果认为不需要的话,可以删除或内联整个类。反射需要访问所有类定义,即使它们已被优化。
2.模板实例化:
C 模板为每个实例化生成唯一的类型。反射需要考虑这些众多的类型及其各自的元数据。此外,模板元编程可以创建许多可能没有运行时表示的临时类。
3.有限的元数据可用性:
标准库容器和类型可能不提供显式元数据,这会限制反射的范围。此外,可能无法对内联函数或类进行反射。
4。调试符号作为部分解决方案:
调试符号提供了一些类型信息,但它们没有涵盖全面反射所需的全部元数据。
未来可能的发展:
虽然全面反思可能不是 C 委员会的高度优先事项,但未来的修订该语言可以探索提供更加结构化的元数据的潜在好处。模块化和自描述可执行提案暗示了增强 C 在该领域能力的潜在途径。
以上是为什么C没有内置反射?的详细内容。更多信息请关注PHP中文网其他相关文章!