记录自已学习之头文件的全局变量引用

来源:互联网 发布:gta5挽歌rh8改装数据 编辑:程序博客网 时间:2024/06/06 02:33
        要想在多个c文件中引用同一个全局变量,一般编译器是不允许我们这么做的,因为全局变量已经定义在头文件中,当头文件被多个c文件引用的时候,这时候就是很容易会出现重复定义的这种情况,因为预编译时候我们的头文件是直接赋值粘贴在我们的c文件中,没有任何的一丝更改,所以在一个被多个c文件中定义的全局变量就会出现错误。
        现在我在这里解释一下我们可以怎么引用这个全局变量。第一种方法就是我们可以在头文件定义的全局变量中前面加上static这个关键字。因为加上了static关键字,这个全局变量在各个c文件中就变成了一个文件的静态变量,就是只能在各自的c文件中定义,虽然名字是一样,而且都是在头文件中定义,但是现在编译的时候是不会出错的,就因为这个static关键字把他们具有相同名字但是他们就是不知道世界上还有跟他们一样名字的存在。如果想要细细了解这个static关键字作用可以看一下我以前写的博文,有一篇就是专门讲这个关键字。
        第二种方法就是先在一个c文件中定义一个全局变量,后面其它的c文件引用这个全局变量的时候只要加上extern这个关键字声明一下就好了。比如就是在一个c文件中声明了一个 int a = 5;,我们可以在另外一个c文件中引用它的时候,我们可以加上一个extern int a;就可以引用我们这个全局变量a了。先说明一点,就是最开始的定义那个a的文件才叫定义,后来我们利用extern关键字的叫作声明,因为每个全局变量只能被定义一次,而声明是可以声明很多次,extern就是把一个变量声明为外部的,这样就可以引用一样的全局变量。
        总结:我觉得还是第一种方法比较靠谱一点,因为它真的是引用了一个头文件的全局变量,而且在头文件中只需要定义一次,不用在其它的c文件中再次声明,所以这是最好的一种方法。第二种我也没有说它不好,只是跟第一种比起来是还是有点麻烦的。
原创粉丝点击