ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 июля
636699 Топик полностью
VL (08.12.2015 09:58, просмотров: 1) ответил Олдфаг на Пример если можно, приведите. И поясните что за проблема с x-макросами. Может, все не так трагично?
Для человека может и не трагично, но ИАР отказывается серфить проект (в частности, показывать места определения переменных). Попробую пояснить, но этот способ программирования тяжеловат для понимания... Х-макросы не просто используются, они используются "тотально" Для описания распределения выводов контроллера (>45) INPUT ( CountersIn , P4 , 0x03u ) OUTPUT ( Valve , P4 , 0x04u ) Для описания переменных в настройках (>100) SETUP_DATA ( Contrast , "Contrast" , "" , DEFAULT_CONTRAST , MAX_CONTRAST ) для описания ошибок устройства (>30) ERROR (x, CanAEmpty, "Canister A empty" , "Gebinde A leer! " , PressEnter , 0x01 ) для описания автоматов состояний (>100) STATE ( AirDeleteA , "Air out A" , "Entl"uuml"ften A" , CLR+STN ) для описания многоязычных сообщений(сотни) MLMESSAGE (mlLanguage , "English " , "Deutsch " /*, "Italiano " , "Franзais " */ ) для описания прочей фигни SENSOR ( TankBelowFull , "Tank not full" , "AC,A0" , GetAdc(TankFullAdc) > se.TankFullLevel ) Макросы разворачиваются и в файлах C, и в хедерах, в результате корректировок как правило происходит полная перекомпиляция проекта - около 30 с. Это до фига, когда работаешь над проектом. Но все отбивается потом, когда через год требуется внести исправления - все прозрачно и понятно. Поскольку в одном вокспейсе несколько проектов, файлы с макросами свои подменяются: #ifdef PCB_VERB #define PINS_HEADER "c2__pins_verb.h" #define SENSORS_HEADER "c2__sensors_b.h" #endif #ifdef PCB_VERA #define PINS_HEADER "c2__pins_vera.h" #define SENSORS_HEADER "c2__sensors_a.h" #endif #define SETUP_HEADER "c2__setup.h" #define STAT_HEADER "c2__statistic.h" #define ERRORS_HEADER "c2__errors.h" #define ML_HEADER "c2__ml.h" Вот и получается - какие нахрен предкомпилированные хедеры?