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

时间:2013-06-23 08:59:59

标签: c# java c++ c

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

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

2 个答案:

答案 0 :(得分:6)

当设计C语言时,计算机的资源非常少,并且将处理时间和内存使用量保持在最低限度非常重要。一种设计,使编译器能够在资源使用最少的single pass中“动态”地读取源文件并进行编译,这种设计比使编译器执行multiple passes的设计更受欢迎源代码或在发出编译代码之前在内存中构造大型数据结构。头文件允许一次编译:它们为您提供了一种方法declare并使用符号,而其定义可能会在源代码中稍后出现,或者它甚至可能在不同的位置文件或外部库。

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

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

答案 1 :(得分:0)

我不确定这是Stackoverflow的合适问题,但是:

当我写一堂课时,我很欣赏有一个单独的.h和.cpp文件的清晰度。这在几个方面使我受益:

1:当其他人必须使用我的类时,他们只需要读取.h文件 - 该类的方法内部没有代码来混淆它们 - 这个函数被称为 so ,这是解释它的作用的评论,你不需要知道其余部分。

2:当我必须检查我的代码时,单独的.h和.cpp允许我比较/对比。如果我在.cpp中有一个半生不熟的方法,我最终不需要,这两个文件之间将不匹配。因此,我可以使用更清晰的.h文件,这个文件更容易查看,看看我是否设法在.cpp文件中做错了。