реклама на сайте
подробности

 
 
> Макросизация всей страны
Dog Pawlowa
сообщение Jul 29 2009, 05:14
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Использую переопределяемые макросы для описания групп переменных.
Например, состояния машины состояний 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 - резервированное слово и препроцессор его анализирует на первом же этапе, и соответственно генерирует ошибку.
Обошел проблему генерацией массива констант, но это увеличивает объем используемой памяти и замедляет работу иногда это критично.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
Непомнящий Евген...
сообщение Jul 29 2009, 05:27
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Используйте другой препроцессор - типа m4 или просто собственный обработчик на чем-нить типа Питона/пхп/перла. А его выход уже скармливайте компилятору.

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

- нужна отдельная билд-утилита - типа make или scons
Go to the top of the page
 
+Quote Post
des00
сообщение Jul 29 2009, 05:32
Сообщение #3


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(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


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 06:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01359 секунд с 7
ELECTRONIX ©2004-2016