【ERROR #20】identifier “XXXXX“ is undefined

【ERROR #20】identifier "XXXXX" is undefined


identifier “XXXXX” is undefined
= 变量“XXXXX”没有被定义

报错:…/Core/Src/main.c(96): error: #20: identifier “hdma_usart3_rx” is undefined

拼写错误

identifier “XXXXX” is undefined
= 变量“XXXXX”没有被定义

报错:…/Core/Src/main.c(96): error: #20: identifier “hdma_usart3_rx” is undefined

链接错误

拼写错误外的就先统称为链接错误
.c、.h与main.c(源文件、头文件、主函数文件

将程序视为阅读

  • main.c为文章
  • main.h为文章的注释
  • usart.h、dma.h为词典中 某一模块的词语的粗略解释
  • usart.c、dma.h为词典的词语的具体解释

那么程序进行流程就是

  • 我们先开始阅读“ main.c文章”

  • 发现有读不懂的“词语” MX_DMA_Init();(函数,结构体变量)

  • 我们先尝试在“注释”(main.h)中找答案

  • “正文”与“注释”中可能不直接给你答案,而是告诉你,当你阅读不懂“文章”时,请去查“字典”

  • 在“字典”的dma.h模块中,你查到了“词语”MX_DMA_Init();

  • 你知道了他的基本信息void MX_DMA_Init(void);(函数传入参数与返回值的类型)

  • 但你仍需要知道这个“词语”的具体意思

  • 所以你跟着dma.h的指引,去到了他指向的dam.c查找“词语”的具体意思

  • 最后你读懂了这个“词语”

  • 然后你继续阅读,重复这个流程

理解链接

解决问题

  • 首先排除拼写错误
  • 接着我们找链接错误在哪
  • “hdma_usart3_rx”在usart.c中定义
  • main.c中也引用了usart.h
  • 那么一定是usart.h没有指向usart.c中的“hdma_usart3_rx”
  • 我们只需在usart.h中extern插入下hdma_usart3_rx,告诉编译器hdma_usart3_rx不在当前文件中,请你去别处找找
  • 这样就完成了usart.h指向usart.c

常用的解决方法

在.h文件中extern xxxx,相当于声明变量,用以链接.h与.c文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值