Keil 报错 #28:原因及解决方法
报错信息概述
Keil 报错 #28 是在 Keil MDK 中进行编译时常见的一种错误,该错误通常表现为编译过程中出现如下提示:
Error #28: Symbol 'SymbolName' not found SymbolName 是报错信息中缺失的符号名称。

报错原因分析
报错 #28 的产生主要是由以下几种原因造成的:
- 符号未定义:在代码中调用的符号(如函数、变量等)未在当前文件或其它相关文件中定义。
- 符号拼写错误:在代码中输入的符号名称与实际定义的名称不匹配。
- 头文件未包含:需要使用的头文件未被包含在当前文件的预处理指令中。
- 预处理器设置错误:预处理器设置不正确,导致宏定义或条件编译出错。
解决方法
针对以上原因,以下提供相应的解决方法:
检查符号定义
- 确认所使用的符号是否在当前文件或其它相关文件中已定义。
- 检查代码中符号的拼写是否正确。
头文件包含
- 检查代码中是否已包含所需头文件。
- 确保头文件路径正确,且头文件本身无错误。
预处理器设置
- 检查预处理器设置是否正确,包括宏定义、条件编译等。
- 可以通过添加调试信息或打印预处理器输出,帮助定位问题。
案例分析
以下是一个具体的案例分析:
问题描述:在编译一个简单的嵌入式项目时,出现报错 #28,提示 Error #28: Symbol 'LED_Init' not found。

解决步骤:
- 检查
LED_Init函数是否在当前文件或其它相关文件中定义。 - 确认
LED_Init函数的拼写是否正确。 - 检查是否已包含头文件
led.h,该头文件中定义了LED_Init函数。 - 检查预处理器设置,确认宏定义和条件编译正确。
解决结果:通过以上步骤,发现 LED_Init 函数在头文件 led.h 中已定义,且拼写正确,确认头文件 led.h 已包含在当前文件中,报错 #28 已被解决。
FAQs
问题 1:Keil 报错 #28 是什么原因引起的?
解答:Keil 报错 #28 主要是由符号未定义、符号拼写错误、头文件未包含或预处理器设置错误等原因引起的。

问题 2:如何解决 Keil 报错 #28?
解答:解决 Keil 报错 #28 的方法包括:检查符号定义、检查头文件包含、检查预处理器设置等,具体操作步骤请参考本文第三部分。

