龙空技术网

C语言中extern的用法

远点Faraway 142

前言:

当前朋友们对“c语言与或”可能比较看重,你们都想要了解一些“c语言与或”的相关文章。那么小编同时在网络上收集了一些对于“c语言与或””的相关文章,希望咱们能喜欢,咱们快快来学习一下吧!

extern用在函数或变量声明前,用来说明“变量或函数是在别处定义的,要在此处引用”。

1.extern变量声明

程序的编译单位是源程序文件,一个源文件可以包含一个或若干个函数。在函数内定义的变量是局部变量,而在函数之外定义的变量则称为外部变量,外部变量也就是我们所讲的全局变量。它的存储方式为静态存储,其生存周期为整个程序的生存周期。全局变量可以为本文件中的其它函数所共用,它的有效范围为从定义变量的位置开始到本源文件结束。

如果在定义点之前的函数想引用该全局变量,则应该在引用之前用关键字extern对该变量作“外部变量声明”,表示该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。对于多个文件的工程,都可以采用上面这种方法来操作。对于模块化的程序文件,可在其文件中预先留好外部变量的接口,也就是只采用extern声明变量,而不定义变量。还有一点extern声明可以放在一个函数内声明,不仅局限在文件中。

通常,这些外部变量的接口都是在模块程序的头文件中声明的,当需要使用该模块时,只需要在使用时具体定义一下这些外部变量即可。

不过,需要特别注意的是,由于用extern引用外部变量,可以在引用的模块内修改其变量的值,因此,如果有多个文件同时要对应用的变量进行操作,而且可能会修改该变量,那就会影响其它模块的使用。因此,我们要慎重使用。

2.extern函数声明

本质上讲,变量和函数没有区别。函数名是指向函数二进制块开头处的指针。如果一个.c文件要引用另外.c文件中函数,那么在此文件中声明此函数,然后就能使用此函数执行。

对其它模块中函数的引用,最常用的方法是包含这些函数声明的头文件。使用extern和包含头文件来引用函数的区别:extern的引用方式比较简洁,extern的使用方法是直接了当的,想引用哪个函数就用extern声明哪个函数。

此外,extern修饰符可用于指示C或者C++函数的调用规范。比如在C++中调用C库函数,就需要在C++程序中用extern "C"声明要引用的函数。这是给链接器使用的,告诉链接器在链接的时候用C函数规范来链接。主要原因是C++和C程序编译完成后在目标代码中命名规则不同。

标签: #c语言与或 #c语言全局函数