首页 > 解决方案 > 语言设计问题:为什么 C 和 C++ 将类型和函数的声明与定义分开?

问题描述

大约 4 年以来,我一直在使用 Python 和 Javascript 制作网站和奇怪的项目,现在我正在跳到 C/C++ 进行新的尝试。如果我的术语已关闭,请原谅我,仍然为所有内容找到正确的语言。

我的理解是,头文件中的函数和类型声明有助于创建用于编译的符号表,它允许您在实际链接到定义之前在 main() 例程(或类似的东西)中引用那些导入的函数。当您“声明”某些内容时,您会将其放入符号表中,因此编译器可以验证来自使用这些导入函数的文件的引用。

所以我的问题是,为什么要从单独的头文件中为导入的函数/类型构建符号表,而不是直接从要导入的源代码中派生它?为什么不只扫描您要导入的 .c 文件,收集函数和 typedef 名称并使用它们来填充符号表?将节省代码(无声明),我认为会使导入代码更直观。

也就是说,我的猜测是我错过了一些东西 - 我确信它的组织方式是有原因的。灵活性?接口的独立性?扫描头文件的工作量会减少吗?我不知道。

您可能有任何见解将不胜感激!

标签: c++clinkerheader-files

解决方案


推荐阅读