解决keil有定义却无法跳转的情况
现象
有#include,go to define 出现以下情况:
![](https://img2023.cnblogs.com/blog/2392961/202309/2392961-20230921164213710-975572902.png)
![](https://img2023.cnblogs.com/blog/2392961/202309/2392961-20230921164214153-1634950290.png)
问题所在
- 在函数内使用#include
void _test(void)
{
#include "hal_uart.h"
#include "string.h"
- typedef enum时带有本名
typedef enum data_flag_et
{
DATA_FLAG_IDLE,
DATA_FLAG_FINISH,
DATA_FLAG_BUFFFULL
}data_flag_t;
解决方法
- 将函数内的#include移至函数外即可。
本质是多个定义域内#include,编译器无法确定跳转到哪个作用域。 - typedef时忽略本名
data_flag_et
typedef enum
{
DATA_FLAG_IDLE,
DATA_FLAG_FINISH,
DATA_FLAG_BUFFFULL
}data_flag_t;
原因未知,有谁知道的话分享下
20231206_1421:发现只要以下定义:
enum data_flag_et
{
AAA,
BBB,
};
就会无法正常跳转。