c语言 extern 给个例子
时间: 2023-04-02 09:04:58 浏览: 75
当一个变量或函数在一个源文件中定义,但是在另一个源文件中需要使用时,可以使用 extern 关键字来声明该变量或函数。例如:
在文件 a.c 中定义一个变量:
```
int num = 10;
```
在文件 b.c 中使用该变量:
```
extern int num;
printf("%d", num); // 输出 10
```
相关问题
C语言 extern
在C语言中,关键字extern用于声明一个全局变量或函数,表示该变量或函数是在其他文件中定义的。它可以用于解决多文件编程时的符号重定义问题。
当我们在一个源文件中使用extern关键字声明一个变量或函数时,它告诉编译器该变量或函数是在其他文件中定义的,编译器会在链接阶段将其与实际定义进行连接。
例如,我们有两个源文件file1.c和file2.c。在file1.c中定义了一个全局变量x,我们希望在file2.c中也能够使用这个变量。我们可以在file2.c中使用extern关键字声明变量x,编译器会在链接阶段将两个文件中的x连接起来。
file1.c:
```c
int x = 10;
```
file2.c:
```c
extern int x;
int main() {
printf("%d\n", x); // 输出10
return 0;
}
```
在上面的例子中,我们在file2.c中使用extern关键字声明了变量x,然后在main函数中可以直接使用x,因为编译器会将其与file1.c中定义的x连接起来。
总之,extern关键字用于声明一个全局变量或函数,并告诉编译器该变量或函数是在其他文件中定义的。这样可以避免多文件编程时的符号重定义问题。
c语言extern 结构体
在 C 语言中,extern 关键字用于声明一个变量或函数是在其他文件中定义的,而不是当前文件中定义的。在结构体中使用 extern 关键字时,需要注意以下几点:
1. 结构体本身不能用 extern 关键字来声明,只能用 typedef 或 struct 关键字来定义结构体类型。
2. 如果在定义结构体类型时使用了 extern 关键字,那么该结构体类型的定义必须在其它文件中进行,而不是在当前文件中。
3. 如果在结构体类型定义中包含了结构体成员变量,并且这些成员变量的类型是其他文件中定义的结构体类型,那么需要使用 extern 关键字来声明这些成员变量的类型。
下面是一个例子:
在文件 A 中定义了一个结构体类型,并使用 extern 关键字声明了其中一个成员变量的类型:
```c
// File A
struct student {
char name[20];
int age;
extern struct score; // 声明 score 的类型是在其他文件中定义的
};
typedef struct student STU;
```
在文件 B 中定义了另一个结构体类型,并定义了 score 变量:
```c
// File B
struct score {
int math;
int english;
};
struct score s = {80, 90};
```
在文件 C 中使用了结构体类型 STU,并定义了一个变量 stu:
```c
// File C
#include <stdio.h>
#include "A.h" // 包含结构体类型的定义
int main() {
STU stu = {"Tom", 18, s}; // 使用定义在文件 B 中的 score 变量
printf("Name: %s, Age: %d, Math: %d, English: %d\n", stu.name, stu.age, stu.score.math, stu.score.english);
return 0;
}
```
在上面的例子中,通过使用 extern 关键字声明了 score 变量的类型,使得在结构体类型 STU 中可以直接使用 score 变量。最后在文件 C 中使用了 STU 结构体类型和 score 变量,输出了 stu 变量的值。