告诉编译器在当前文件以外的地方有一个名为g_rs485的变量。当需要实际访问或修改这个变量时,就需要先包含该头文件并使用全局变量名。具体举例解释
时间: 2024-09-15 13:09:27 浏览: 36
当你在一个C/C++项目中,如果你有一个全局变量`g_rs485`,它的定义放在一个单独的头文件`applications_rs485.h`中,如上述代码所示:
```c
// applications_rs485.h
#ifndef APPLICATIONS_RS485_H_
#define APPLICATIONS_RS485_H_
typedef struct {
uint8_t RxBuff[BUFFER_SIZE];
...其他成员...
} rs485_t;
rs485_t g_rs485;
#endif // APPLICATIONS_RS485_H_
```
当你在另一个源文件(比如`main.c`)中想要使用`g_rs485`这个变量时,直接在文件顶部`#include "applications_rs485.h"`,告诉编译器这个变量在外部某个地方已经定义过。这样做是为了避免在所有使用这个变量的地方都复制其定义,保持代码的一致性和减少错误可能。
例如,在`main.c`中:
```c
// main.c
#include "applications_rs485.h" // 引入头文件
void process_data() {
rs485_t myRs485; // 只需要在这里声明,不需要再定义一遍
myRs485.RxLen = 10; // 修改或访问g_rs485的值
}
```
如果在`main.c`里不加`#include "applications_rs485.h"`,那么`myRs485`将被视为一个未初始化的局部变量,无法引用到`g_rs485`。所以,使用`extern`的关键字是为了告知编译器这个变量在别的地方已经被声明,而实际的内存分配和初始化则在包含该头文件的文件中完成。
阅读全文