0

我在c中研究过使用关键字extern的变量是外部引用
的,例如:
Prog1.c Prog2.c 这两个程序一起成功编译。这是否意味着 Prog2.c 中的变量 a 也具有外部链接(外部引用)?
main(){
extern int a ;
a=2;
}


int a=3;

但是在 dennis ritchie pg-195 第 a4.1 节中写到,在所有块之外声明的对象,与函数定义处于同一级别,始终是静态的,我认为静态意味着内部链接,那么上述程序中到底发生了什么?

4

2 回答 2

2
By default, an object or variable that is defined outside all blocks 
has static duration and external linkage. 

静态持续时间是指对象或变量在程序启动时被分配,在程序结束时被释放。外部链接意味着变量的名称从声明变量的文件外部可见。相反,内部链接意味着名称在声明变量的文件之外不可见。

于 2013-05-24T07:18:58.190 回答
0

如果您使用的是 extern 关键字,那么您可以使用该变量而无需在同一个文件中声明它。您需要在一个文件中声明变量并使用 extern 关键字在所有其他文件(模块)中使用它。

默认情况下,全局变量具有外部链接,除非通过添加 static 关键字进行更改。 将有助于澄清事情。

于 2013-05-24T07:28:31.563 回答