extern int globalVariable = 0;这样的操作会出现什么问题?
时间: 2024-04-16 11:23:54 浏览: 18
在C语言中,`extern int globalVariable = 0;` 这样的操作会导致编译错误。这是因为在使用 `extern` 关键字声明变量时,变量不能进行初始化赋值。
当你使用 `extern` 关键字声明一个变量时,它告诉编译器该变量在其他文件中已经定义。因此,在声明时不需要进行赋初值的操作。如果你在 `extern` 声明时进行了赋值操作,编译器会认为它是一个定义,并且会在编译时报错。
如果你想为 `extern` 声明的变量赋初值,应该将赋值操作放在变量的定义处,而不是在声明处。
例如,在一个文件中进行变量的定义和赋初值:
```c
// file1.c
int globalVariable = 0;
```
然后,在其他文件中使用这个全局变量的外部声明:
```c
// file2.c
extern int globalVariable;
```
这样,全局变量可以在其他文件中使用,并且在定义处进行了赋初值的操作。
相关问题
extern int globalVariable = 0;这样的操作是否可取
在C语言中,使用 `extern` 关键字来声明变量是为了告诉编译器该变量在其他文件中已经定义。然而,一般情况下不建议在声明时就进行赋值。因此,`extern int globalVariable = 0;` 这样的操作是不可取的。
如果你想在其他文件中使用这个全局变量,可以在声明时使用 `extern` 关键字,而不进行赋值操作。然后,在定义这个全局变量的文件中进行赋初值的操作。
例如,在一个文件中声明全局变量:
```c
// file1.h
extern int globalVariable;
```
然后,在另一个文件中定义并赋初值:
```c
// file1.c
int globalVariable = 0;
```
这样,其他文件就可以通过包含 `file1.h` 来访问和使用这个全局变量。
总结来说,`extern int globalVariable = 0;` 这样的操作不符合一般的编程规范,建议将赋值操作放到定义变量的地方进行。
'extern'variable has an initializer
在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"来声明并初始化该变量是不必要的。
希望这个例子能解答您的问题!如果您还有其他问题,请随时提出。