外部链接提供跨编译单元的范围。
理论上,可以使用外部链接替换包括使用它们的头文件吗?
我不是故意这样做,而是要求更好地理解这些概念。
相反,可以包括使用其中的声明的头文件替换外部链接吗?
外部链接和头文件在用例中有很多重叠吗?
感谢。
答案 0 :(得分:2)
Linkage是标识符的属性。标识符声明的详细信息确定了它在该声明范围内的链接,因此您没有声明就没有链接(或首先是标识符)。
头文件主要是一种共享声明的方式,所以不,外部链接不是头文件的替代方法。这两者甚至不具有可比性。实际上,在头文件中声明的标识符通常包括一些具有外部链接的标识符,因此外部链接和头文件不是互斥的。
现在,您可以直接在源文件中放置您想要的任何声明,而不是(或除此之外)通过#include
标头获取它们。这不仅包括具有外部链接的标识符的声明,还包括始终没有链接的标识符的声明,例如typedef
名称,枚举和结构标记。也许这就是你的意思。然而,即使你只有少量的源文件可以共享声明,这种做法也很难扩展。