【发布时间】:2015-06-09 01:45:58
【问题描述】:
我问这个问题是 this 帖子的后续问题。他们说extern 块声明有外部链接而不是内部链接,但我不知道为什么:
static int i = 0; // #1
void g() {
extern int i; // #3 external linkage
}
为什么extern 声明不采用i 的链接(内部链接)?帖子中的引用似乎允许这样做。在 OP 引用之后的示例中,它具有:
static void f();
void g() {
extern void f(); // internal linkage
// ...
}
它说外部声明具有内部链接。为什么使用变量和函数有区别?
【问题讨论】:
-
“但我不知道为什么” 据我所知,那个问题是基于错误的前提:标准说
extern int i;在您的问题中有 internal 链接(我对 §3.5p6 的解释)。