Синтаксическая ошибка Eclipse CDT для ключевого слова __attribute__ - PullRequest
1 голос
/ 01 ноября 2011

Хотелось бы узнать, есть ли способ избавиться от предупреждений об ошибках синтаксиса CDT при использовании ключевого слова gcc "__attribute__".

Само собой разумеется, что я не хотел бы отключать проверку синтаксиса CDT.

Ответы [ 4 ]

3 голосов
/ 10 апреля 2013

Определение "ECLIPSE_THINKS_THIS_IS_SET_BUT_GCC_DOESNT" (из ответа ams ) действительно существует и называется __CDT_PARSER__.Например:

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

Надеюсь, это будет полезно.

2 голосов
/ 29 ноября 2011
Project->Properties->C/C++ general->Path and Symbols->Symbols

Add-> 
     Name: __attribute__(X)
     Value: (leave blank)

Ссылки по теме: Вы можете использовать эту технику в основном с любым оскорбительным ключевым словом

2 голосов
/ 29 ноября 2011

Я не пробовал это, и я не использовал Eclipse в течение некоторого времени, но вот идея:

В настройках CDT для Eclipse (или, может быть, просто вашего проекта) установите предопределенный макрос (кажется, я помню, вы можете сказать, что это автоматически определяет компилятор) с именем __attribute__, который принимает один параметр и расширяется до нуля .

Возможно, я не объяснил это правильно. Позвольте мне попробовать еще раз с примером. По сути, цель состоит в том, чтобы определить макрос, который работает следующим образом:

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

но без добавления чего-либо на самом деле в ваш код.

1 голос
/ 16 апреля 2014

Ответ Зиу также работает для компиляторов XC8 Microchip

Name: __interrupt
Value: (leave blank)

Прототип функции теперь чист:

void __interrupt ISRs(void);

И Eclipse не будет жаловаться на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...