c# - 为什么 C/C++ 有头文件,不像 C# 和 Java 等其他语言?

标签 c# java c++ c

<分区>

我对动机很感兴趣——在 C/C++ 中通过头文件将接口(interface)与实现分离的动机是什么,为什么其他语言的作者不借用这个概念并在其他(更新的)中使用它)语言? 是不是说这个概念不好?

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

最佳答案

当设计 C 语言时,计算机的资源非常少,因此将处理时间和内存使用量保持在最低限度非常重要。一种使编译器能够读取源文件并在 single pass 中“即时”编译它的设计,以最少的资源使用,比让编译器做 multiple passes 的设计更受欢迎在发出编译代码之前,在源代码上或在内存中构建一个大型数据结构。头文件支持一次性编译:它们为您提供了一种方法 declare并使用一个符号,而它的定义可能会出现在源代码的后面,或者它甚至可能在不同的文件或外部库中。

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

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

关于c# - 为什么 C/C++ 有头文件,不像 C# 和 Java 等其他语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17259154/

相关文章:

c# - 流式传输大型视频文件 .net

java - 在 Android 中访问基于 Soap 的 Web 服务

C++计算数字(不是字符串)之间的空格

c# - 为什么抽象类和接口(interface)不能实例化?

c# - 如何将空白文本框值作为 null 传递给绑定(bind)日期时间

针对 Android API 19 时 JavaScript CSS 覆盖不起作用

java - 通过代码实现 Java 性能?

c++ - 处理运行时类型未知的模板

c++ - 如何使用 Win32 消除 C++ 中原始音频信号中的随机不连续性?

c# - 在不创建实现的情况下实现接口(interface)(动态代理?)