c语言中extern 如何定义到头文件中被其他.c文件使用
时间: 2024-03-27 20:37:40 浏览: 21
在 C 语言中,你可以将 `extern` 声明放在头文件中,然后在需要使用该变量或函数的源文件中包含该头文件即可。
例如,在头文件 `myheader.h` 中声明一个全局变量:
```c
extern int my_global_variable;
```
然后在 `source1.c` 和 `source2.c` 中分别定义和使用该变量:
```c
// source1.c
#include "myheader.h"
int my_global_variable = 42;
// source2.c
#include "myheader.h"
void foo() {
int x = my_global_variable + 1;
// ...
}
```
在上面的例子中,`my_global_variable` 被定义在 `source1.c` 中,并在 `myheader.h` 中声明为 `extern`。在 `source2.c` 中,我们可以通过 `#include "myheader.h"` 来引用该变量,并在函数 `foo()` 中使用它。
注意,为了避免重复定义,你需要在一个源文件中定义该变量,而其他源文件中只能声明为 `extern`。另外,你也需要确保头文件中只包含变量或函数的声明,而不是定义,否则可能会导致重复定义的编译错误。
相关问题
c语言中extern关键字的作用
C语言中,extern关键字有以下两个作用:
1. 声明一个全局变量或函数,告诉编译器该变量或函数是在其他文件中定义的,需要在链接时从其他文件中获取其定义。这种声明方式通常放在头文件中,以便在多个文件中使用同一个全局变量或函数。
例如,在一个.c文件中定义了一个全局变量a,在另一个.c文件中想要使用该变量时,可以在该文件中使用extern关键字声明该变量,告诉编译器该变量是在其他文件中定义的:
```c
extern int a;
```
2. 声明一个函数为外部函数,告诉编译器该函数是在其他文件中定义的,需要在链接时从其他文件中获取其定义。这种声明方式通常放在头文件中,以便在多个文件中使用同一个函数。
例如,在一个.c文件中定义了一个函数foo,在另一个.c文件中想要调用该函数时,可以在该文件中使用extern关键字声明该函数,告诉编译器该函数是在其他文件中定义的:
```c
extern void foo();
```
需要注意的是,C语言中全局变量和函数默认是extern的,如果在其他文件中定义了同名的全局变量或函数,则会导致链接错误。因此,通常建议在定义全局变量和函数时加上static关键字,将其作用域限制在当前文件中,避免出现命名冲突。
windwos C语言在.h文件中定义一个可被其它代码访问的数组
在.h文件中定义一个可被其他代码访问的数组,可以使用extern关键字来声明该数组,并在对应的.c文件中定义该数组。例如,在test.h文件中声明一个名为arr的数组:
```c
extern int arr[10];
```
然后在test.c文件中定义该数组:
```c
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
```
这样其他代码就可以通过包含test.h头文件来访问该数组了。注意,需要在编译时将test.c文件与其他代码一起编译链接。