为什么C/C++有不同于C#和Java等其他语言的头文件?

Nov*_*tor 0 c c# c++ java

我对这个动机感兴趣 - C/C++的动机是什么让接口与头文件分离,为什么其他语言的作者没有借用这个概念并在其他(更新的)语言中使用它?这是不是意味着这个概念不好?

编辑:我不是在问为什么c/c ++使用头文件 - 我问为什么这个概念不会留在Java等新语言中.

Jon*_*oni 6

设计C语言时,计算机的资源非常少,因此将处理时间和内存使用量保持在最低限度非常重要.一种设计可以使编译器在一次通过中 "动态"地读取源文件并以最少的资源使用进行编译,这种设计比使编译器对源代码进行多次传递或构造在发出编译代码之前,内存中的大数据结构.头文件允许在单个传递中进行编译:它们为您提供了一种声明和使用符号的方法,而其定义可能在源代码中稍后出现,或者甚至可能位于不同的文件或外部库中.

较新语言(如C#和Java)的设计认为程序员的便利性比优化编译器的资源使用更为重要.此外,许多现代C编译器已经使用多次传递,因为在单次传递中不可能应用许多代码优化; 对于新语言使用单通道设计现在几乎没有什么好处.

头文件还有其他好处:它们允许您将接口与实现分开,以便头文件用作API文档,而不会暴露实现细节.