关于代码中g_tagParams和g_loggerparams全局变量多次定义错误的求助
求助:代码中全局变量g_tagParams和g_loggerparams出现“多次定义”编译错误
各位好,我在本地编译代码的时候碰到了个头疼的问题——编译器一直报错说g_tagParams和g_loggerparams这两个全局变量在多个函数里被多次定义了,但我明明只在特定地方声明/定义了它们啊!
先给大家理清楚目前的情况:
问题核心现象
编译阶段触发multiple definition错误,指向g_tagParams和g_loggerparams,其中我整理了g_tagParams的所有定义与使用位置:
变量定义位置
仅在
Intf_Tag.h第57行有定义:tag_parameters g_tagParams[TAG_POSITIONS_MAX];
各文件中的使用位置
- Intf_Config.c(第413行):
g_tagParams[iTagPosition - 1].u16TxPower = wValue; - Intf_History.c(多处使用):
- 第141-143行:初始化发射功率
g_tagParams[TAG_POSITION_1 - 1].u16TxPower = 1000; g_tagParams[TAG_POSITION_2 - 1].u16TxPower = 1000; g_tagParams[TAG_POSITION_3 - 1].u16TxPower = 1000; - 第356行:记录标签位置到缓冲区
u64RecordBufferIndex += sprintf(&chRecordBuf[u64RecordBufferIndex], "%1i,", (int)(g_tagParams[iTagPosition - 1].u8TagPosition)); - 第358、364、367等行:读取温度、检查EPC等操作
- 第141-143行:初始化发射功率
- Intf_Tag.c(大量读写操作):
- 第45-52行:初始化标签参数结构体
g_tagParams[iTagPos - 1].u8TagPosition = iTagPos; g_tagParams[iTagPos - 1].u16InventoryTime_ms = TAG_DEFAULT_INVENTORY_TIME; g_tagParams[iTagPos - 1].u16TxPower = TAG_DEFAULT_READ_TX_POWER; // ... 其他字段初始化代码 - 第136-198行:清空EPC、赋值温度、调用标签读取函数、更新错误状态等
- 第213-294行:设置天线发射功率、执行盘点操作等
- 第45-52行:初始化标签参数结构体
我实在搞不懂:变量明明只在头文件里定义了一次,其他文件都是直接引用,为什么会触发“多次定义”的错误?有没有大佬能帮我分析下问题出在哪,该怎么解决这个编译错误?
内容来源于stack exchange
相关产品推荐
相关产品推荐

