我将这个问题作为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声明有内部联系。使用变量和函数时为什么会有区别?
答案 0 :(得分:0)
因为变量“i”具有静态存储。所以,就你的代码而言,
此外,您可能会发现此讨论很有趣: Understanding static storage class in C