全局声明的变量是外部变量还是静态变量?

时间:2013-05-24 07:13:31

标签: c static coding-style extern kernighan-and-ritchie

我在c中研究了使用关键字extern的变量是外部引用的 例如:
prog1.c的
main(){
extern int a ;
a=2;
}

Prog2.c
int a=3;
这两个程序一起成功编译。这是否意味着Prog2.c中的变量a具有外部链接(外部引用)以及

但它是在dennis ritchie pg-195 section a4.1中写的,在所有块之外声明的对象,与函数定义在同一级别,总是静态的,我认为静态意味着内部联系,所以在以上程序?

2 个答案:

答案 0 :(得分:2)

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

静态持续时间表示在程序启动时分配对象或变量,并在程序结束时解除分配。外部链接意味着变量的名称在声明变量的文件外部可见。相反,内部链接意味着名称在声明变量的文件之外不可见。

答案 1 :(得分:0)

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

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