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

时间:2017-10-06 19:41:10

标签: c linkage

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

理论上,可以使用外部链接替换包括使用它们的头文件吗?

我不是故意这样做,而是要求更好地理解这些概念。

相反,可以包括使用其中的声明的头文件替换外部链接吗?

外部链接和头文件在用例中有很多重叠吗?

感谢。

1 个答案:

答案 0 :(得分:2)

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

头文件主要是一种共享声明的方式,所以不,外部链接不是头文件的替代方法。这两者甚至不具有可比性。实际上,在头文件中声明的标识符通常包括一些具有外部链接的标识符,因此外部链接和头文件不是互斥的。

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