解决keil有定义却无法跳转的情况

现象

有#include,go to define 出现以下情况:

多个完全一样的Name。

问题所在

  1. 在函数内使用#include
void _test(void)
{
  #include "hal_uart.h"
  #include "string.h"
  1. typedef enum时带有本名
typedef enum data_flag_et
{
  DATA_FLAG_IDLE,
  DATA_FLAG_FINISH,
  DATA_FLAG_BUFFFULL
}data_flag_t;

解决方法

  1. 将函数内的#include移至函数外即可。
    本质是多个定义域内#include,编译器无法确定跳转到哪个作用域。
  2. 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,
};

就会无法正常跳转。

后续遇到其他原因会补充

posted @ 2023-09-21 16:36  USTHzhanglu  阅读(1035)  评论(0编辑  收藏  举报