``` extern ```
时间: 2024-05-25 07:08:53 浏览: 12
`extern`是C/C++中的一个关键字,用于声明一个变量或函数是在别处定义的(即在其他源文件或库中定义的)。在使用`extern`关键字声明变量或函数时,编译器不会为其分配内存空间或者生成代码,而是认为它已经在别的地方定义好了,并且可以在当前源文件中使用。
下面是对于给出代码的逐行逐段解释:
```c++
#include <iostream>
using namespace std;
```
以上两行代码是C++中常用的头文件和命名空间。
```c++
extern int a; //声明一个变量a,这个变量在其他源文件或库中定义
extern void func(); //声明一个函数func,这个函数在其他源文件或库中定义
```
以上两行代码使用了`extern`关键字声明了变量`a`和函数`func()`,告诉编译器它们是在其他源文件或库中定义的。
```c++
int main() {
cout << "Hello, World!" << endl;
return 0;
}
```
这里的`main()`函数没有使用到前面声明的变量和函数,因此不会报错。但如果在该函数中使用这些变量或函数,则会报链接错误,因为编译器找不到它们的定义。
相关问题
externextern
extern关键字在C/C++中用于声明外部变量或函数。在使用extern关键字时,必须指定变量或函数的类型。对于全局变量,在外部使用时,必须使用extern关键字进行声明。如果变量没有使用extern修饰且没有显式初始化,就成为了变量的定义。对于函数的声明,extern关键字是可有可无的,因为函数本身默认是extern的。
使用extern关键字可以扩展全局变量的作用域,使其在其他文件中可见。当我们需要在当前文件中使用其他文件中定义的全局变量或全局函数时,需要先使用extern进行外部声明,然后才能在当前文件中使用该全局变量或全局函数。
以下是一个使用extern关键字的示例:
```cpp
// util.cpp
#include <iostream>
using namespace std;
int num = 20; // 全局变量
void fn() { // 全局函数
cout << num << endl;
}
// index.cpp
extern int num;
extern void fn();
int main() {
fn();
num = 100;
fn();
}
```
extern define
extern是C语言中的一个关键字,用于在一个文件中声明一个变量或函数是在其他文件中定义的。它告诉编译器在当前文件中只是声明这个变量或函数,而定义在其他文件中。extern关键字可以用于变量和函数的声明。
在C语言中,extern关键字可以置于变量或函数的前面,以指示编译器在其他模块中寻找其定义。这在多文件编程中非常有用,可以将变量或函数的定义分散在不同的文件中,同时在需要使用它们的文件中进行声明。
当使用extern声明一个变量时,意味着该变量在其他文件中已经定义,并且可以在当前文件中使用。而当使用extern声明一个函数时,表示该函数在其他文件中已经定义,并且可以在当前文件中调用。
需要注意的是,对于extern声明的变量,可以在多个文件中多次声明,但是定义只能有一次。
总结:
- extern关键字用于在当前文件中声明一个变量或函数是在其他文件中定义的。
- 对于extern声明的变量,可以在多个文件中多次声明,但是定义只能有一次。
- 对于extern声明的函数,可以在当前文件中调用其定义在其他文件中的函数。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)