C語言中的extern變量
extern變量是全局變量的擴充。
全局(global)變量
在任何一個函數之外聲明的變量就是全局變量,全局變量可以被聲明所在文件中的任何一個函數調用。全局變量只可以被定義一次。
int globalVar
globalVar定義為全局變量時,默認初值為0,並且系統為之分配相應的內存。現在,定義該變量的文件中的任意一個函數可以調用它。
extern變量
假如你想要調用另外一個文件中的全局變量,如果你再聲明一個同名的全局變量,那么編譯器會因為重名報錯,這個時候就要使用extern變量。
extern int globalVar
extern聲明告訴編譯器這個變量的定義在其他文件中,所以並不會為它分配內存。
例子
#main.c
#include<stdlib.h>
#include<stdio.h>
#include"test.h"
int a; /* global variable */
int main(int argc, char** argv)
{
a = 10;
func();
return 0;
}
#test.h
extern int a
int func();
# test.c
#include"test.h"
#include"stdio.h"
int func()
{
printf("value of a is %d", a );
}
$ gcc main.c test.c -o main
$ ./main
value of a is 10