'extern'variable has an initializer
时间: 2023-12-27 13:02:41 浏览: 201
在C语言中,"extern"关键字用于声明一个外部变量,并且可以给外部变量赋初值。
当您在一个源文件中使用"extern"关键字来声明一个变量时,它表示该变量是在其他源文件中定义的,并且可以在当前源文件中使用。在声明该变量时,您也可以给它赋初值。
以下是一个示例:
假设我们有两个源文件:main.c和globals.c。
在globals.c中定义一个外部变量:
```c
int globalVariable = 10;
```
在main.c中使用该外部变量:
```c
extern int globalVariable;
```
您可以选择在声明时给该外部变量赋初值:
```c
extern int globalVariable = 20;
```
这样,当您在main.c中使用该外部变量时,它将具有初始值20。
请注意,如果在globals.c中已经对该外部变量进行了初始化,那么在main.c中使用"extern"来声明并初始化该变量是不必要的。
希望这个例子能解答您的问题!如果您还有其他问题,请随时提出。
相关问题
extern variable has an initial
### 回答1:
值,但是它的值可以在程序的任何地方被改变。在C语言中,extern关键字用于声明一个变量是在其他文件中定义的全局变量,并且在当前文件中可以使用它。extern变量的初始值可以在定义它的文件中进行初始化,也可以在其他文件中进行初始化。在程序中,extern变量的值可以被多个文件共享和修改,因此需要小心使用。
### 回答2:
外部变量(extern variable)是指在某个源文件中声明,但在另外一个源文件中定义的变量。由于其定义不在当前文件中,因此需要使用extern关键字进行声明。而extern variable has an initial则是指外部变量在声明时可以进行初始化。
在C语言中,外部变量的作用域可以扩展到整个程序,也就是说,在不同的源文件中都可以使用同一个外部变量。为了避免在不同的文件中定义同名的外部变量,我们通常将其放在一个头文件中,并在需要使用该变量的源文件中通过include指令引入该头文件。
在头文件中声明外部变量时,可以进行初始化。例如,我们可以在头文件中声明一个全局变量:
extern int g_num = 0;
此时,在引入该头文件的源文件中就可以直接使用该变量了,并且其初始值为0。
需要注意的是,如果在不同的源文件中都对同一全局变量进行初始化,可能会出现链接错误。因此,我们通常只在一个源文件中对外部变量进行初始化,而在其他源文件中只进行声明,以避免这种错误。
总的来说,extern variable has an initial是指外部变量可以在声明时进行初始化,而其作用域又可以扩展到整个程序,让我们更加方便灵活地使用全局变量。
### 回答3:
extern变量是在一个文件中定义的变量,但是需要在其他文件中使用。当我们在使用一个extern变量时,需要确保在代码中先定义和初始化这个变量。
extern变量必须在一个文件中进行初始化,我们可以在其他文件中使用这个变量,但是这个变量必须在它所在的文件中初始化。
初始化extern变量的方式有两种:一种是在定义extern变量的文件中初始化,另一种是在另一个文件中使用static关键字来定义这个变量并初始化。
当我们在定义一个extern变量时,如果不初始化这个变量,那么它的默认值就是0。实际上,在C/C++中,所有未显示初始化的全局变量(包括extern变量)都会被初始化为0。
总之,extern变量在定义时需要确定其初始值。如果没有显式地指定初始值,它将被初始化为0。如果没有在定义的文件中初始化,那么可以在其他文件中使用static关键字来初始化。
'extern' variable has an initializer [-Wextern-initializer]
这个编译警告是因为在声明一个 extern 变量时给它赋了一个初始值。extern 变量是在别的文件中定义的全局变量,本文件中只是声明它的存在,不应该给它赋值。
如果你需要在本文件中使用这个变量的初始值,可以将这个变量定义在本文件中,并且在定义时同时初始化它。如果你只是想使用这个变量,不需要定义它,只需要在本文件中声明它即可。例如:
```
// 在其他文件中定义的全局变量
extern int global_var;
// 在本文件中声明全局变量的存在
extern int global_var;
// 在本文件中定义全局变量并初始化
int global_var = 10;
```
阅读全文