C语言 非静态变量没有以前的外部声明
时间: 2023-11-23 20:18:45 浏览: 123
C语言之外部变量讲解
如果一个非静态变量没有之前的外部声明,那么在使用它的时候编译器会报错。这是因为编译器不知道这个变量的类型和作用域,需要我们提供外部声明来告知编译器。
下面是一个示例:
```c
// file1.c
#include <stdio.h>
int main() {
extern int num; // 声明外部变量num
printf("%d\n", num); // 使用外部变量num
return 0;
}
```
```c
// file2.c
int num = 10; // 定义外部变量num
int main() {
return 0;
}
```
在上面的示例中,我们在 `file1.c` 中使用了一个外部变量 `num`,但是没有提供之前的外部声明。因此,编译器会报错:
```
error: 'num' undeclared (first use in this function)
```
要解决这个问题,我们需要在 `file1.c` 中提供一个外部声明来告知编译器 `num` 的类型和作用域,如下所示:
```c
// file1.c
#include <stdio.h>
extern int num; // 外部声明num
int main() {
printf("%d\n", num); // 使用外部变量num
return 0;
}
```
这样编译器就知道了 `num` 的类型和作用域,可以正常编译和运行程序了。
阅读全文