解释下extern的使用
时间: 2023-11-21 17:37:42 浏览: 38
`extern` 是 C/C++ 中用于声明一个全局变量或函数的关键字。它的作用是告诉编译器,这个变量或函数是在其他文件中定义的,编译器在编译时不会将其分配内存空间,而只是在编译时检查它是否已经在其他文件中定义过了。
一般来说,当我们在一个文件中定义了一个全局变量或函数,并想在其他文件中使用它们时,需要在使用的文件中使用 `extern` 来声明它们。这样编译器就知道这个变量或函数是在其他文件中定义的,并正确地生成相应的指令。
例如,我们在文件a.c中定义了一个全局变量 `int global_var = 10;`,如果我们在文件b.c中想要使用这个全局变量,就需要在文件b.c中使用 `extern int global_var;` 来声明它,这样编译器才能正确地生成相应的指令。
需要注意的是,`extern` 只是声明,不是定义。在使用 `extern` 声明一个全局变量或函数时,不能初始化它们。也就是说,不能这样声明一个全局变量:`extern int global_var = 10;`。
另外,`extern` 还可以用于在不同的文件中共享同一个函数的定义。当我们在一个文件中定义了一个函数,并在另一个文件中使用它时,也需要在使用的文件中使用 `extern` 来声明它。这样编译器就知道这个函数是在其他文件中定义的,并正确地生成相应的指令。
相关问题
解释一下c++中的extern
在C++中,`extern`是一个关键字,可以用来声明一个变量或函数是在其他文件中定义的。它的作用是告诉编译器在本文件中并没有定义该变量或函数,需要在其他文件中查找它的定义。具体来说,`extern`可以有以下两种用法:
1. 声明一个全局变量或函数
```c++
// 在某个头文件中声明全局变量
extern int global_var;
// 在某个头文件中声明函数
extern void func();
```
这样在其他文件中包含该头文件后,就可以使用`global_var`和`func`了。
2. 引用其他文件中的全局变量或函数
```c++
// 在某个头文件中声明全局变量
extern int global_var;
// 在某个源文件中使用该变量
int main() {
// 引用其他文件中定义的全局变量
extern int global_var;
cout << global_var << endl;
return 0;
}
```
这样,在编译时,编译器会在其他文件中查找`global_var`的定义,链接时将其与当前文件中的引用链接起来。
需要注意的是,`extern`只是一个声明,不是定义。定义是在某个文件中初始化变量或函数。如果多个文件中都定义了同名的全局变量或函数,链接时会出现重复定义的错误。
extern uint8 BuzzerState;解释
这行代码定义了一个名为 BuzzerState 的全局变量,类型为 uint8,表示该变量只能存储 8 位的无符号整数。关键字 extern 表示该变量是在其他源文件中定义的,当前文件只是引用了该变量。