为什么头文件没有在其他编程语言中流行?

8 c# c++ java

基于对这个问题的回答:为什么C++有头文件和CPP

我已经看到了回答并理解了答案 - 那么为什么没有这样做呢?C#Java?

Rod*_*ddy 28

因为它是接口与实现问题的快速,肮脏和不雅的解决方案.

它完全依赖于C预处理器,它是抽屉中最直接的工具.

其他解决方案可避免以下问题:

  • 一个人会做的两个文件
  • 由于多个定义,链接时重复符号
  • 由于多个"静态"常量导致代码膨胀
  • 标题保护的要求,以防止多重包含
  • 违反DRY原则
  • 和更多...

Dviljoen认为我很努力,而且他是对的.从打孔卡和纸带时代开始,它已有近40年的历史.尽管存在上面列出的所有潜在问题和问题,但仍有大量使用源/头文件排列的C/C++内置高质量软件.


Aar*_*lla 8

因为它意味着复制您可以从源代码中获取的信息.其他语言试图避免此代码重复.

在我过去的C日,我做了同样的事情.我将所有信息保存在我的.c文件中,并使用一个小工具在正常构建期间从它们生成头文件.


Jim*_*son 6

在C#的情况下,3.0 规范说明

因为程序集是包含代码和元数据的自描述功能单元,所以C#中不需要#include指令和头文件.特定程序集中包含的公共类型和成员只需在编译程序时引用该程序集即可在C#程序中使用.


has*_*sen 5

因为它们是过去的剩菜.

现代语言使用模块和包的概念.

如果要使用在另一个文件中定义的函数/类,请导入该文件.编译器会找出符号(即名称),以便您可以使用它们.

C/C++方法:手工提取函数/类定义并将它们放在另一个文件中,然后在任何想要使用它们的地方对这些定义进行文本包含.