extern变量是在头文件还是在源文件中
时间: 2024-02-25 17:57:50 浏览: 108
`extern` 变量通常应该在头文件中声明,在源文件中定义。这是因为,头文件是用于在不同源文件中共享声明的位置,而源文件则是用于实现这些声明的位置。
例如,如果你有一个 `global.h` 头文件,其中包含了 `extern int hour;` 声明,那么你可以在任何需要使用 `hour` 变量的源文件中包含该头文件。这将告诉编译器在其他源文件中使用 `hour` 变量的实际定义。
然后,在一个源文件中定义 `hour` 变量,例如 `global.cpp`:
```c++
#include "global.h"
int hour = 0;
```
这将定义实际的 `hour` 变量,并在其他源文件中共享该变量的声明。
相关问题
c语言中extern 如何定义到头文件中被其他.c文件使用
在 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` 声明一个全局变量,这意味着该变量的定义在其他地方(通常是另一个源文件)。
当你在一个 C 源文件中引用一个在另一个源文件中声明的全局变量时,你需要在当前源文件中使用 `extern` 来声明该变量。这只是告诉编译器该变量已经被声明了,但它的定义在其他源文件中。编译器会在链接时查找该变量的实际定义。
如果你在头文件中声明了一个全局变量,但没有在任何源文件中定义它,那么当你包含该头文件时,编译器会在当前源文件中查找该变量的定义,因为它不知道该变量的实际定义在哪里。如果找不到变量的定义,编译器会报出 "未定义" 的错误。
因此,在头文件中声明全局变量并不是一个好的编程实践。通常情况下,你应该在一个源文件中定义全局变量并在头文件中声明它,以避免出现这种错误。
阅读全文