我尝试了不同的网站,但是我还是不明白。你能用简单易懂的英语解释一下吗?
static
的对象,仅限于翻译单元但在整个程序中可用。static
的同级对象。这些在翻译单元之间共享。extern
,仅在该范围内唯一。分享我对这个问题的理解。
作用域
是为了编译器
的利益,而链接
则是为了链接器
的利益。
编译器
使用标识符的作用域
来确定在文件的给定位置是否可以引用该标识符。当编译器将源文件转换为目标代码时,它会注意到哪些名称具有外部链接
,最终将这些名称存储在对象文件内部的表中。
因此,链接器
可以访问具有外部链接
的名称;带有内部链接
或无链接
的名称对链接器不可见。
(上述文本摘自书籍《C程序设计:现代方法》,其中包含完全相同的问题)。