Здравствуйте, у меня есть следующая проблема:
- IDE: Eclipse Версия: 2018-12 (4.10.0) с плагином Keil C51 (для сопоставления языков)
- Компилятор (external): Wickenhäuser uc51
Проблема здесь: Плохая последовательность символов Eclipse
Отображение языка Keil использует этот синтаксис:
xdata unsigned char Port = 0x1;
Wickenhäuser немного отличается:
xdata unsigned char Port @ 0x1;
Итак, я пришел к этому рабочему решению:
#ifdef __CDT_PARSER__
xdata unsigned char Port = 0x1;
#else
//xdata unsigned char Port @ 0x1; //BAD Character Squence encountered: @
#define AT_ADDRESS(n) @##n //Using this Macro to get around this problem
xdata unsigned char Port_B AT_ADDRESS(0x1);
#endif
Но это решение не идеально, (удваивает запись и т. Д.) И должно выглядеть так:
#ifdef __CDT_PARSER__ //In Keil I have to define this too, to make use the Keil syntax
//#define AT_ADDRESS(n) // This works
#define AT_ADDRESS(n) =##n // Gives error
#else
#define AT_ADDRESS(n) @##n
#endif
xdata unsigned char Port_B AT_ADDRESS(0x1); // GIVES ERROR: Invalid use of macro pasting in macro AT_ADDRESS
К сожалению, Eclipse помечает это так: недопустимое использование макроса, вставляемого в макрос AT_ADDRESS