【发布时间】:2011-11-01 14:45:43
【问题描述】:
我想知道在使用 gcc 的“__attribute__”关键字时是否有办法摆脱 CDT 语法错误警告。
不用说,我不想关闭 CDT 语法检查。
【问题讨论】:
标签: gcc indexing syntax-error eclipse-cdt
我想知道在使用 gcc 的“__attribute__”关键字时是否有办法摆脱 CDT 语法错误警告。
不用说,我不想关闭 CDT 语法检查。
【问题讨论】:
标签: gcc indexing syntax-error eclipse-cdt
“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__
希望这会有所帮助。
【讨论】:
我没试过,也有一段时间没用过Eclipse了,不过这里有个思路:
在 Eclipse(或者可能只是您的项目)的 CDT 设置中,设置一个名为 __attribute__ 的预定义宏(我似乎记得您可以告诉它编译器自动定义的内容),它接受一个参数,然后扩展为空.
也许我没有正确解释。让我再举一个例子。基本上,目的是定义一个像这样工作的宏:
#if ECLIPSE_THINKS_THIS_IS_SET_BUT_GCC_DOESNT
#define __attribute__(X) /* nothing */
#endif
但实际上没有在您的代码中添加任何内容。
【讨论】:
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 的支持吗?
ziu 的回答也适用于 XC8 Microchip 编译器
Name: __interrupt
Value: (leave blank)
现在函数原型是干净的:
void __interrupt ISRs(void);
Eclipse 不会抱怨。
【讨论】: