理论上使用外部链接和包含头文件可以相互替代吗?

Theoretically can using external linkage and including header files replace each other?

外部链接提供跨编译单元的范围。

从理论上讲,使用外部链接是否可以在使用它们的地方替换包含头文件?

我不是故意的,只是要求更好地理解这些概念。

反之,包含使用头文件声明的地方是否可以代替外部链接?

外部链接和头文件在它们的用例中是否有很多重叠?

谢谢。

链接是 属性 标识符。标识符声明的详细信息决定了它在该声明范围内的链接,因此没有声明就没有链接(或首先是标识符)。

Header 文件主要是一种共享声明的方式,所以不,外部链接不能替代 header 文件。两者甚至没有可比性。事实上,在 header 文件中声明的标识符通常包含一些带有外部链接的标识符,因此外部链接和 header 文件并不相互排斥。

现在,您可以将您想要的任何声明直接放在源文件中,而不是(或除此之外)通过#includeing [=21]获取它们=]秒。这不仅包括具有外部链接的标识符的声明,还包括始终没有链接的标识符的声明,例如 typedef 名称、枚举和结构标记。也许这就是你的意思。然而,这种做法的扩展性很差,即使您只有少数源文件可以在其中共享声明。