我在 Mac 上使用基于 eclipse IDE 的 ACS STM32Workbench。我收到以下错误语法错误警告,并且我的代码以黄色突出显示,这非常令人恼火。在“问题”选项卡中,没有有关警告的信息。
我尝试添加大括号、清理项目、刷新 C/C++ 索引器中的所有文件等,但没有成功。我也不想禁用此功能,因为它绝对有用,但误报令人恼火。 请帮忙。
编辑
正确包含定义这些结构/宏的所有 header 。
#define GPIOA_BASE (APB1PERIPH_BASE + 0x0800U)
#define GPIOB_BASE (APB1PERIPH_BASE + 0x0C00U)
#define GPIOC_BASE (APB1PERIPH_BASE + 0x1000U)
#define GPIOD_BASE (APB1PERIPH_BASE + 0x1400U)
#define GPIOA ((GPIO_Regdef_t*)GPIOA_BASE);
#define GPIOB ((GPIO_Regdef_t*)GPIOB_BASE);
#define GPIOC ((GPIO_Regdef_t*)GPIOC_BASE);
#define GPIOD ((GPIO_Regdef_t*)GPIOD_BASE);
typedef struct
{
__IO uint32_t CRLR;
__IO uint32_t CRHR;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint32_t BSRR;
__IO uint32_t BRR;
__IO uint32_t LCKR;
}GPIO_Regdef_t;
最佳答案
这是一个宏定义:
#define GPIOA ((GPIO_Regdef_t*)GPIOA_BASE);
这是一个用途:
if(pGPIOX == GPIOA)
因此我们可以用它的定义替换GPIOA
:
if(pGPIOX == ((GPIO_Regdef_t*)GPIOA_BASE);)
观察GPIOA
定义中的分号。
(我没有显示 GPIOA_BASE
的替换,因为它与此处无关。)
关于c - C/C++ 代码中错误的 eclipse 警告下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57967397/