【问题标题】:False eclipse warning underlines in the C/C++ codeC/C++ 代码中的 Eclipse 错误警告下划线
【发布时间】:2020-01-17 21:55:33
【问题描述】:

我在 Mac 上使用基于 Eclipse IDE 的 ACS STM32Workbench。我收到以下错误语法错误警告,并且我的代码以黄色突出显示,这太烦人了。在“问题”选项卡中,没有关于警告的信息。

我尝试添加大括号、清理项目、更新 C/C++ 索引器中的所有文件等,但没有成功。我也不想禁用此功能,因为它绝对有用,但误报很烦人。 请帮忙。

编辑

正确包含所有定义这些结构/宏的标头。

#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;

【问题讨论】:

    标签: c eclipse macos


    【解决方案1】:

    这是一个宏定义:

    #define GPIOA ((GPIO_Regdef_t*)GPIOA_BASE);
    

    这里有一个用途:

        if(pGPIOX == GPIOA)
    

    所以我们可以用它的定义替换GPIOA

        if(pGPIOX ==  ((GPIO_Regdef_t*)GPIOA_BASE);)
    

    观察GPIOA定义中的分号。

    (我没有显示 GPIOA_BASE 的替换,因为它在这里不相关。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      相关资源
      最近更新 更多