1. extern 变量申明 :
C 语言中 extern 可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。这里面要注意,对于 extern 申明变量可以多次,但定义只有一次;
PS:这样做的话,就会使相应的变量能在整个工程上使用,但是,这个在使用上要十分小心;
eg:
main.c:
int main()
{
extern void show();
extern void printf_one();
printf_one();
show();
}
b.c:
#include "main.h"//这个需要添加,不然的话,就会主函数在查找相应的函数体或者是,什么之类的话,会遇到问题。
#include<stdio.h>
void show()
{
printf("hello");
}
void printf_one()
{
printf("i am ok!");
}
2.在extern变量声明时,要注意的一些事项:
(1).在变量声明的时候。
eg:
在b.c中写了 int a;
如果在main.c中使用的时候,要注意,就是extern int a;
如果要extern int a =3;//这种边声明,边定义的方式是错的。
extern int a;
a = 3;//这种方式是正确的。
(2).以下两种的函数的调用方式是一样的。
A:在main.c中:
extern int a;//这个只是表示要应用外部的变量,在具体的变量的文件中,要引用定义时在头文件中。
a = 3;//这个在定义时用;
printf("%d\n", a);
extern void computer();
在b.c中:
#include "main.h"
int a;
void computer()
{
a = a + 1;
printf("%d\n", a);
}
//输出的结果是:3\n4
B.
在main.c中:
#include "b.h"//要引用这个,然后再进行现有的调用;
int a=3;
computer(a);//这个使用相当于在函数的调用。所以,这个要使用形式参数来进行参数的传入。
在 b.c中:
void computer(int a)
{
a = a + 1;
printf("%d\n", a);
}
同时在b.h中,也要写相应的函数,不然的话,就不行。因为函数的调用和使用时,是通过调用头文件来进行查找的。