c++ - 语言设计问题:为什么 C 和 C++ 将类型和函数的声明与定义分开?
问题描述
大约 4 年以来,我一直在使用 Python 和 Javascript 制作网站和奇怪的项目,现在我正在跳到 C/C++ 进行新的尝试。如果我的术语已关闭,请原谅我,仍然为所有内容找到正确的语言。
我的理解是,头文件中的函数和类型声明有助于创建用于编译的符号表,它允许您在实际链接到定义之前在 main() 例程(或类似的东西)中引用那些导入的函数。当您“声明”某些内容时,您会将其放入符号表中,因此编译器可以验证来自使用这些导入函数的文件的引用。
所以我的问题是,为什么要从单独的头文件中为导入的函数/类型构建符号表,而不是直接从要导入的源代码中派生它?为什么不只扫描您要导入的 .c 文件,收集函数和 typedef 名称并使用它们来填充符号表?将节省代码(无声明),我认为会使导入代码更直观。
也就是说,我的猜测是我错过了一些东西 - 我确信它的组织方式是有原因的。灵活性?接口的独立性?扫描头文件的工作量会减少吗?我不知道。
您可能有任何见解将不胜感激!
解决方案
推荐阅读
- c# - 在包含静态字段的非静态类中触发析构函数?
- nginx - nginx 502 错误 - 连接到上游时连接()失败(111:连接被拒绝)
- php - 迁移中的外键错误(Laravel 6.0)
- sql - 如何解决 oracle 数据库中缺少或无效的选项?
- mysql - 显示使用 UNION 的查询结果的唯一值(联合返回两列,我想显示一列中的唯一值)
- javascript - 相机如何从剪辑空间转换为屏幕空间?
- java - 使用 JLabel 和 JButton 出现转换错误
- java - 我仍然没有得到正确的价值
- angular - http调用后角度不绑定响应
- light-4j - 如何在 light-4j 配置文件中使用环境变量?