C语言的外部变量的定义和引用对初学者来说,是个难点.
对外部变量的说明和定义不是一回事.对外部变量的说明,只是声明该变量是在外部定义过的一个全局变量..在这里引用.而对外部变量的定义,则是要分配存储单元.一个全局变量只能定义一次,却可以多次引用.
用extern声明外部变量,目的是可以在其它的文件中调用.具体使用见下面的例子:
file1.c file2.c
int i,j;//定义全局变量 extern int i,j;//外部变量说明
char c; extern char c;
void func() void func1()
{ {
} }
在file2.c中对外部变量i,j,c进行了说明,就可以直接调用file1.c中定义的全局变量了
静态变量static的使用
有时在中断程序中定义了变量,不希望每次进入中断程序,变量就被赋初值.这时就要使用static变量.静态局部变量在编译时赋初值,既只赋初值一次.见下例:
void serial_interrupt() interrupt 4 using 3
{ static uchar i="0";
i++;
}
上例中,编译时,i被赋初值0,以后每进入一次中断,i+1,而不是每次进入中断,i都被请零,再加1
如果在a.c中要调用在b.c中定义的函数func(),需要在a.c中声明该函数,表示该函数在别的源文件中定义。函数是可以互相调用的,因此函数都具有外部存储种类的属性。原则上调用一个在在本程序模块文件以外的其他模块文件所定义的函数,必须用关键字extern说明被调用函数是一个外部函数。实际使用中可以省掉extern。即下面两个函数声明没有明显的区别:
extern int f();和int f();
文章评论(0条评论)
登录后参与讨论