首页 >后端开发 >C++ >为什么C没有内置反射?

为什么C没有内置反射?

Patricia Arquette
Patricia Arquette原创
2024-12-10 13:21:10783浏览

Why Doesn't C   Have Built-in Reflection?

为什么反射不是 C 中的一个突出特性

虽然反射在许多编程语言中是一个有价值的工具,但它在 C 中的缺失一直是一个争论的话题。以下是 C 语言委员会尚未实现成熟反射的几个原因:

1.复杂性和工作量:

在 C 中实现反射需要付出巨大的努力,并且可能会带来意想不到的后果。委员会优先考虑了其他被认为更重要的功能。

2.运行时开销:

与 Java 等虚拟机语言不同,C 不在虚拟机上运行。合并反射会引入运行时开销,这可能会损害该语言著名的性能。

3. C 的有限优势:

C 复杂的模板元编程功能使开发人员能够实现许多与反射相同的目标。这减少了对专用反射机制的需求。

在 C 中实现反射的挑战

尽管存在反对反射的争论,但如果在 C 中实现反射,将会出现一些挑战:

1。保留类定义:

C 允许进行积极的优化,如果认为不需要的话,可以删除或内联整个类。反射需要访问所有类定义,即使它们已被优化。

2.模板实例化:

C 模板为每个实例化生成唯一的类型。反射需要考虑这些众多的类型及其各自的元数据。此外,模板元编程可以创建许多可能没有运行时表示的临时类。

3.有限的元数据可用性:

标准库容器和类型可能不提供显式元数据,这会限制反射的范围。此外,可能无法对内联函数或类进行反射。

4。调试符号作为部分解决方案:

调试符号提供了一些类型信息,但它们没有涵盖全面反射所需的全部元数据。

未来可能的发展:

虽然全面反思可能不是 C 委员会的高度优先事项,但未来的修订该语言可以探索提供更加结构化的元数据的潜在好处。模块化和自描述可执行提案暗示了增强 C 在该领域能力的潜在途径。

以上是为什么C没有内置反射?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn