解決keil有定義卻無法跳轉的情況
現象
有#include,go to define 出現以下情況:
問題所在
- 在函數內使用#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,
};
就會無法正常跳轉。

浙公網安備 33010602011771號