c - C/C++ 代码中错误的 eclipse 警告下划线

标签 c eclipse macos

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

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

编辑

正确包含定义这些结构/宏的所有 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/

相关文章:

ios - 在 mac os 中制作自己的服务,如 cron 如何在 mac os 上的 plist 中运行此调度程序服务

c - 使用 "if"时重新启动 C 程序

c - 马尔可夫清洁功能问题

android - 从Android Studio读取txt、mp3等文件

c++ - 使用字符串读取文件 - Xcode

macos - Mac代码签名: Bypass the Keychain Access private key prompt from Terminal

c - 带有条件运算符的语句的工作原理是什么?

c - 左移一个正整数给我一个负数

Web 项目中的 Java EE 模块依赖项?

java - 无法弄清楚文件发生了什么,并且无法在 Eclipse 中重新创建它