extern 函数
时间: 2023-10-18 14:14:17 浏览: 54
在C语言中,`extern`是一个关键字,用于声明一个变量或函数是在其他文件中定义的。在函数中使用`extern`关键字声明一个函数时,表示该函数在其他源文件中定义,因此编译器不会在当前文件中生成该函数的代码。
使用`extern`关键字声明一个函数时,通常需要在当前文件中包含该函数的头文件,以确保编译器可以正确识别该函数的声明。例如,假设我们在文件`main.c`中需要使用一个在文件`other.c`中定义的函数`foo()`,我们可以在`main.c`文件中进行如下声明:
```c
extern void foo();
```
这样,编译器就不会在`main.c`中生成`foo()`函数的代码,而是在链接时从`other.c`文件中获取该函数的定义。需要注意的是,函数的定义和声明必须在不同的文件中,否则会导致重复定义错误。
在实际应用中,`extern`关键字通常用于实现模块化编程,将程序的各个部分分别编译成不同的目标文件,然后通过链接器将它们组合在一起生成最终的可执行文件。
相关问题
C语言extern函数
在C语言中,extern关键字用于声明一个函数或变量是在其他文件中定义的。这样,在当前文件中就可以使用这个函数或变量,而不需要重新定义一遍。
具体来说,如果在一个文件中声明了一个extern函数,那么编译器会在链接时在其他文件中寻找这个函数的定义。如果找到了,就将其链接到当前文件中;如果没有找到,就会报链接错误。
例如,我们可以在一个头文件中声明一个extern函数:
```
// header.h
extern void foo();
```
然后在另一个文件中使用这个函数:
```
// main.c
#include "header.h"
int main() {
foo();
return 0;
}
```
在链接时,编译器会在其他文件中寻找foo函数的定义。
matlab extern函数
Matlab允许使用extern关键字来声明外部函数,以便在Matlab环境中使用这些函数。
在Matlab中,extern关键字用于声明外部函数的接口。它告诉Matlab编译器在编译时,该函数存在于其他源文件中或者是通过动态链接库提供的。
下面是一个示例,展示了如何在Matlab中使用extern关键字声明外部函数接口:
```matlab
% 在Matlab中声明外部函数的接口
extern void myExternalFunction(int arg1, double arg2);
% 调用外部函数
arg1 = 10;
arg2 = 3.14;
myExternalFunction(arg1, arg2);
```
在上面的示例中,我使用extern关键字声明了一个名为myExternalFunction的外部函数的接口。然后,我可以在Matlab中调用这个外部函数,并传递所需的参数。
请注意,extern关键字只是用于声明外部函数的接口,并不包含实际的函数实现。因此,你需要确保在编译和链接过程中正确地包含和链接外部函数的实现。具体的编译和链接细节将取决于你使用的编译器和操作系统。
希望这个回答对你有所帮助!如果你还有其他问题,请随时提问。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)