繁体   English   中英

外部变量声明没有内部链接

[英]Extern variable declaration does not have internal linkage

我问这个问题,从一个跟进这个职位。 他们说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声明具有内部链接。 为什么使用变量和函数会有区别?

因为变量“ i”具有静态存储。 因此,就您的摘录而言,

  • 省略“静态”语句将产生“无链接”
  • 应用“静态”语句将产生“外部链接”(因为静态存储是C / C ++运行时基础结构中非常特殊的一部分)。

此外,您可能会发现此讨论很有趣: 了解C中的静态存储类

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM