``` extern uint8 mt9v03x_finish_flag; vuint8 mt9v03x_finish_flag = 0;```如何让两个定义同时存在
时间: 2024-10-13 07:05:03 浏览: 23
small_store_drive.rar_WriteToMemory_u8 api
在这段代码中,`extern` 关键字通常用于声明一个外部变量(比如在头文件中),告诉编译器这个变量是在另一个源文件中定义的。`mt9v03x_finish_flag` 的 `extern` 定义表示它是一个外部整型变量。
而紧接着的 `vuint8 mt9v03x_finish_flag = 0;` 则是该变量的一个实例化定义,将它初始化为 0,并且在这里是作为局部变量或者内部静态变量存在的。
如果你想在同一作用域内既有 extern 声明又有局部定义,通常是不允许的,因为 C 语言规定 extern 只能在作用域外声明变量。但是,如果你在一个包含文件中这样做:
1. 在 `.h` 文件(头文件)里:
```c
extern uint8 mt9v03x_finish_flag;
```
2. 然后在`.c` 文件(实现文件)里:
```c
#include "your_header.h" // 包含头文件
// 如果你想要在当前文件内部也有一个同名变量,可以这么做
uint8 mt9v03x_finish_flag; // 这里只在本文件有效
mt9v03x_finish_flag = 0; // 初始化本地变量
```
这样做的目的是保证在其他模块需要使用这个变量的时候,它们会看到 extern 声明的那个全局变量。而在当前文件内,你可以有一个独立的、局部的副本。然而,这是潜在的命名冲突,最好避免在实际项目中这样做,除非有特殊的设计需求。
阅读全文