1,
声明:"这个函数或变量在某处可找到,它的摸样是什么".
定义:在这里建立变量(分配存储空间)或建立函数(占用一定内存).
2,extern int i;
这只是一个声明,i的定义在别的地方.
3,深入的探讨一下:
(1)extern修饰变量的声明。
举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。
这里需要注意的是,被引用的变量v的链接属性必须是外链接(external)的,也就是说a.c要引用到v,不只是取决于在 a.c中声明extern int v,还取决于变量v本身是能够被引用到的。
这涉及到c语言的另外一个话题--变量的作用域。能够被其他模块以extern修饰符引用到的变量通常是全局变量。
还有很重要的一点是,extern int v可以放在a.c中的任何地方,比如你可以在a.c中的函数fun定义的开头处声明extern int v,然后就可以引用到变量v了,只不过这样只能在函数fun作用域中引用v罢了,这还是变量作用域的问题。
(2)extern修饰函数声明。从本质上来讲,变量和函数没有区别。
函数名是指向函数二进制块开头处的指针。如果文件a.c需要引用b.c中的函数,比如在b.c中原型是int fun(int mu),那么就可以在a.c中声明extern int fun(int mu),然后就能使用fun来做任何事情。
就像变量的声明一样,extern int fun(int mu)可以放在a.c中任何地方,而不一定非要放在a.c的文件作用域的范围中。
对其他模块中函数的引用,最常用的方法是包含这些函数声明的头文件。
使用extern和包含头文件来引用函数有什么区别呢?
extern的引用方式比包含头文件要简洁得多.extern的使用方法是直接了当的,想引用哪个函数就用extern声明哪个函数。这大概是KISS原则的一种体现吧!这样做的一个明显的好处是,会加速程序的编译(确切的说是预处理)的过程,节省时间。
(3)extern修饰符可用于指示C或者C++函数的调用规范。
比如在C++中调用C库函数,就需要在C++程序中用extern "C"声明要引用的函数。
这是给链接器用的,告诉链接器在链接的时候用C函数规范来链接。主要原因是C++和C程序编译完成后在目标代码中命名规则不同。
4,下面是一个标准的写法:
//在.h文件的头上
#ifdef __cplusplus
#if __cplusplus
extern "C"{
#endif
#endif
...
//.h文件结束的地方
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
分享到:
相关推荐
extern关键字的作用extern关键字的作用extern关键字的作用extern关键字的作用extern关键字的作用extern关键字的作用extern关键字的作用extern关键字的作用extern关键字的作用extern关键字的作用extern关键字的作用...
详解C语言正确使用extern关键字 extern关键字是C语言中一个重要的关键字,用于在一个文件中引用另一个文件中的变量或者函数。下面将通过实例代码详细介绍extern关键字的使用方法和注意事项。 一、引用同一个文件中...
C语言中关键字const、static、volatile、extern、auto、register的用法分析 本文将对C语言中的六个关键字:const、static、volatile、extern、auto、register进行详细的分析和解释。 一、const关键字 Const关键字...
extern 是 C 语言中的一种关键字,用于声明变量或函数的定义在其他文件中。它可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 1. 基本解释 ...
答案:如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。例如,extern int f(); 和 int f(); 没有明显的区别。 问题3: extern 函数 2 ------------- 问题:当函数...
* export:为了访问其他编译单元中的变量或对象,对一般类型可以利用关键字 extern,但对模板类型,需要使用关键字 export。 * extern:声明变量或函数为外部链接,即该变量或函数名在其它文件中可见。 通过对 C++ ...
extern关键字用于声明全局变量。全局变量可以在程序的任何地方使用,并且在程序运行期间一直存在。例如:extern int name; 四、register关键字 register关键字用于声明寄存器变量。寄存器变量是保存在寄存器之中的...
在C#编程语言中,`extern`关键字是一个非常重要的元素,它主要被用来处理与非托管代码的交互,也就是引入外部非.NET Framework编译的函数库,如动态链接库(DLL)。下面我们将深入探讨`extern`关键字的作用、用法...
extern关键字在定义函数时如果在函数首部的最左端冠以关键字extern,则表示此函数是外部函数,可供其他文件调用。C语言规定,如果在定义函数时省略extern,则隐含为外部函数。在文件中要调用其他文件中的外部函数,...
C语言中extern关键字详解.docx ,C语言中extern关键字详解.docx
1.13 最会带帽子的关键字extern 1.14 struct关键字 1.15 union关键字 1.16 enum关键字 1.17 typedef关键字 第二章 符号 2.1 注释符号 2.2 连接符与转义符 2.3 单引号、双引号 2.4 逻辑运算符 2.5 位运算符 2.6 花...
C# 不安全代码关键字:unsafe、C# 关键字const 和 readonly、C# 关键字extern用法、C#关键字Fixed、C#关键字IntPtr、C#关键字之override详解、C#中DllImport用法汇总、C#中的IntPtr
Extern关键字用于声明在外部实现的方法。例如: [extern] public static void MyMethod(); 16. Event关键字 Event关键字用于在发行者类中声明事件。例如: public event EventHandler MyEvent; 17. Const关键字...
iOS开发中关键字const、static、extern、UIKIT_EXTERN的区别和用法 在iOS开发中,const、static、extern和UIKIT_EXTERN四个关键字经常被混淆或不清楚它们的意思和用法。以下将详细介绍这些关键字的释义和用法。 一...
l声明extern关键字的全局变量和函数可以使得它们能够跨文件被访问。 我们一般把所有的全局变量和全局函数的实现都放在一个*.cpp文件里面,...l全局函数的声明语句中,关键字extern可以省略,因为全局函数默认是extern类
### C语言extern关键字的用法 #### 一、引言 在C语言中,`extern`关键字主要用于在多个源文件之间共享变量或函数定义。它允许程序员在一个源文件中声明一个变量或函数,并且该变量或函数的实际定义位于另一个...
在C和C++编程中,理解和恰当使用`extern`关键字以及`extern "C"`对于构建复杂、多模块的软件系统至关重要。它们不仅有助于提高代码的组织性和可维护性,也是实现C和C++代码间相互调用的基础。通过本文的详细讲解,...