函数声明前加extern的作用
时间: 2023-10-30 18:54:52 浏览: 52
在 C 语言中,`extern` 关键字用于声明一个全局变量或函数,以指示该变量或函数是在其他源文件中定义的。
当在一个源文件中使用 `extern` 关键字声明一个函数时,它告诉编译器该函数的定义在其他源文件中,并且在链接期间会进行连接。
例如,在源文件 a.c 中定义了一个函数 `abc()`,而在源文件 b.c 中需要调用该函数。可以在 b.c 文件中使用 `extern` 关键字来声明 `abc()` 函数,如下所示:
```c
// b.c
extern void abc(); // 声明函数 abc(),告知编译器该函数的定义在其他源文件中
int main() {
abc(); // 调用 abc() 函数
return 0;
}
```
通过使用 `extern` 关键字,告知编译器在链接阶段会找到 `abc()` 函数的定义。这样,编译器就能够正确地进行类型检查和生成可执行文件。
需要注意的是,如果函数声明和定义在同一个源文件中,不需要使用 `extern` 关键字。`extern` 主要用于在一个源文件中声明另一个源文件中定义的函数或变量。
相关问题
c 函数声明前面加extern
extern关键字用于声明一个全局变量或函数在其他文件中定义。它告诉编译器该变量或函数在当前文件中并没有定义,而是在其他文件中定义。
对于函数的声明,extern关键字可选,因为函数声明默认是外部链接的。但是,如果你想显式地声明函数为外部链接,可以在函数声明前面加上extern关键字。
例如:
```c
extern int globalVariable;
extern void someFunction();
int main() {
// 使用全局变量和函数
return 0;
}
```
在上面的示例中,我们使用extern关键字来声明了一个全局变量globalVariable和一个函数someFunction,表示它们在其他文件中定义。然后,在main函数中可以使用这些变量和函数。
函数声明为extern
extern是C语言中的一个关键字,用于声明一个变量或函数是在其他文件中定义的。这样做的目的是为了让编译器在编译时知道该变量或函数的存在,但不会在当前文件中分配内存空间。
例如,如果在一个文件中声明了一个全局变量,但该变量的定义在另一个文件中,那么可以使用extern关键字来告诉编译器该变量的定义在其他文件中。
函数声明为extern的语法如下:
extern return_type function_name(arguments);
其中,return_type是函数返回值的类型,function_name是函数名,arguments是函数参数列表。
需要注意的是,函数声明为extern时,不需要提供函数体。因为函数体已经在其他文件中定义了。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.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)