【问题标题】:Eclipse CDT syntax error on __attribute__ keyword__attribute__ 关键字上的 Eclipse CDT 语法错误
【发布时间】:2011-11-01 14:45:43
【问题描述】:

我想知道在使用 gcc 的“__attribute__”关键字时是否有办法摆脱 CDT 语法错误警告。

不用说,我不想关闭 CDT 语法检查。

【问题讨论】:

    标签: gcc indexing syntax-error eclipse-cdt


    【解决方案1】:

    “ECLIPSE_THINKS_THIS_IS_SET_BUT_GCC_DOESNT”定义(来自 ams 的回答)确实是 extsts,它称为 __CDT_PARSER__。例如:

    #ifdef __CDT_PARSER__
    #define __FILE__                "<file>"
    #define __LINE__                (-1)
    #define __DATE__                "<date>"
    #define __TIME__                "<time>"
    #endif // #ifdef __CDT_PARSER__
    

    希望这会有所帮助。

    【讨论】:

    • 这是完美的,我相信正确的答案。这种方法的另一个好处是它可以应用于多个项目,而无需任何额外的项目配置。
    【解决方案2】:

    我没试过,也有一段时间没用过Eclipse了,不过这里有个思路:

    在 Eclipse(或者可能只是您的项目)的 CDT 设置中,设置一个名为 __attribute__ 的预定义宏(我似乎记得您可以告诉它编译器自动定义的内容),它接受一个参数,然后扩展为空.

    也许我没有正确解释。让我再举一个例子。基本上,目的是定义一个像这样工作的宏:

    #if ECLIPSE_THINKS_THIS_IS_SET_BUT_GCC_DOESNT
    #define __attribute__(X) /* nothing */
    #endif
    

    但实际上没有在您的代码中添加任何内容。

    【讨论】:

    • 感谢提示,我解决了这个问题。我发布了一个直接的答案,你得到了赏金。
    【解决方案3】:
    Project->Properties->C/C++ general->Path and Symbols->Symbols
    
    Add-> 
         Name: __attribute__(X)
         Value: (leave blank)
    

    相关链接:You can use this technique basically with any offending keyword

    【讨论】:

    • 这对我不起作用。它会在构建中产生错误:syntax error: unexpected "(" 我假设这是在宏的(X) 部分上吐出的外壳。这甚至得到 GCC 的支持吗?
    【解决方案4】:

    ziu 的回答也适用于 XC8 Microchip 编译器

    Name: __interrupt
    Value: (leave blank)
    

    现在函数原型是干净的:

    void __interrupt ISRs(void);
    

    Eclipse 不会抱怨。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 2012-04-19
      • 2012-03-09
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 2014-01-20
      相关资源
      最近更新 更多