Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Макросизация всей страны
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Dog Pawlowa
Использую переопределяемые макросы для описания групп переменных.
Например, состояния машины состояний UI:
Код
STATE (stMIN_DISCHARGE  ,  fMinDischarge        ,  "Min Discharge"    ,  "Min. Entnahme"    , CLR+STN+OLD      )

Поля макроса потом разворачиваются в соответствующие enum и инициализацию массивов функций, указателей на текст, признаков и проч.

Всем доволен(разве что время компиляции увеличивается), но есть вопрос
Очень желательно, чтобы из записи типа:
SENSOR ( LOW_OUTPUT_PRESSURE , 0x0001 , "Low out press" , "DC,A0" )
получилось
#define bitLOW_OUTPUT_PRESSURE 0x0001

Проблема в том, что define - резервированное слово и препроцессор его анализирует на первом же этапе, и соответственно генерирует ошибку.
Обошел проблему генерацией массива констант, но это увеличивает объем используемой памяти и замедляет работу иногда это критично.
Непомнящий Евгений
Используйте другой препроцессор - типа m4 или просто собственный обработчик на чем-нить типа Питона/пхп/перла. А его выход уже скармливайте компилятору.

+ свобода - можно сделать "макросы" любой сложности

- нужна отдельная билд-утилита - типа make или scons
des00
Цитата(Dog Pawlowa @ Jul 28 2009, 23:14) *
Использую переопределяемые макросы для описания групп переменных.
Например, состояния машины состояний UI:
Код
STATE (stMIN_DISCHARGE  ,  fMinDischarge        ,  "Min Discharge"    ,  "Min. Entnahme"    , CLR+STN+OLD      )

Поля макроса потом разворачиваются в соответствующие enum и инициализацию массивов функций, указателей на текст, признаков и проч.

Всем доволен(разве что время компиляции увеличивается), но есть вопрос
Очень желательно, чтобы из записи типа:
SENSOR ( LOW_OUTPUT_PRESSURE , 0x0001 , "Low out press" , "DC,A0" )
получилось
#define bitLOW_OUTPUT_PRESSURE 0x0001

Проблема в том, что define - резервированное слово и препроцессор его анализирует на первом же этапе, и соответственно генерирует ошибку.
Обошел проблему генерацией массива констант, но это увеличивает объем используемой памяти и замедляет работу иногда это критично.


http://caxapa.ru/161540.html
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.