宝安高端网站设计怎么样,如何自己做网站推广,泰安网络科技公司,网站怎么做网页游戏1 extern 函数
为什么要用extern 函数呢#xff1f;直接#include相应的头文件不可以嘛#xff1f;
例子#xff0c;如b.c 想调用a.c 中的fun函数,有两种方法#xff1a;
方法1#xff1a;include 头文件#xff0c;即直接 #include a.h
方法2: extern 方…1 extern 函数
为什么要用extern 函数呢直接#include相应的头文件不可以嘛
例子如b.c 想调用a.c 中的fun函数,有两种方法
方法1include 头文件即直接 #include a.h
方法2: extern 方法 extern void fun(...)这句在调用文件中使用表示引用全局函数fun()当然函数默认是全局的。
不inlcude delayms.h就不会引入大量头文件进而不会引入大量的无关函数。这样做的一个明显的好处是会加速程序的编译确切的说
2.2 extern 变量
如果文件b.c需要引用a.c中变量int v就可以在b.c中声明extern int v然后就可以引用变量v。能够被其他模块以extern修饰符引用到的变量通常是全局变量。注意extern int v可以放在a.c中的任何地方具体作用范围和局部变量相同。
extern的原理很简单就是告诉编译器“你现在编译的文件中有一个标识符虽然没有在本文件中定义但是它是在别的文件中定义的全局变量你要放行”
extern修饰变量的用法
对变量而言变量的声明有两种情况 一种是需要建立存储空间的不用加extern另一种是不需要建立存储空间,需要加extern 。如果你想在本源文件中使用另一个源文件的变量就需要在使用前用extern声明该变量或者在头文件中用extern声明该变量
尤其是对于变量来说。 extern int a;//声明一个全局变量a int a; //定义一个全局变量a
extern int a 0 ;//定义一个全局变量a 并给初值。 int a 0;//定义一个全局变量a,并给初值
第四个 等于 第 三个都是定义一个可以被外部使用的全局变量并给初值。 糊涂了吧他们看上去可真像。但是定义只能出现在一处。也就是说不管是int a;还是extern int a0;还是int a0;都只能出现一次而那个extern int a可以出现很多次。
当你要引用一个全局变量的时候你就要声明extern int a;这时候extern不能省略因为省略了就变成int a;这是一个定义不是声明。
extern修饰函数的用法
函数对函数来说也是定义和声明定义的时候用extern说明这个函数是可以被外部引用的声明的时候用extern说明这是一个声明。但由于函数的定义和声明是 有区别的。定义函数要有函数体声明函数的时候没有结构体所以函数的声明和定义都可以将extern省略掉其他文件知道这个函数是在其他地方定义的所以不加extern也行。省略extern也不会有问题。
int fun(void) { return 0; }
很好我们定义了一个全局函数
int fun(void); 我们对它做了个声明然后后面就可以用了 加不加extern都一样 我们也可以把对fun的声明 放在一个头文件里最后变成这样
int fun(void);//函数声明所以省略了extern完整些是extern int fun(void);
int fun(void) { return 0; } //一个完整的全局函数定义因为有函数体extern同样被省略了。 然后一个客户一个要使用你的fun的客户把这个头文件包含进去ok一个全局的声明。没有问题。但是对应的如果是这个客户要使用全局变量那么要extern 某某变量不然就成了定义了。