[an error occurred while processing this directive] [an error occurred while processing this directive]
Знатоки С++, а как можно сделать следующее (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Внезапный тупик 16 апреля 2002 г. 11:32

В программе есть несколько подключаемых модулей, количество которых постоянно изменяется в процессе отладки/доработки. В одном из файлов собираются однотипные действия, чтобы потом использовать одной строкой (типа SYSTEM_INIT(), и все модули будут проинициализированы).
Все включаемые вызовы - тоже inline, некоторые из них реализованы как пустые.

#include "Leds.h"
#include "Timer.h"
#include "SPI.h"
#include "UART.h"

inline void SYSTEM_INIT(){ // начальная инициализация
Leds::Init();
Timer::Init();
SPI::Init();
UART::Init();
}
inline void SYSTEM_RUN(){ // запуск работы
Leds::Run();
Timer::Run();
SPI::Run();
UART::Run();
}
inline void SYSTEM_TICK(){ // системные тики ~15 мс
Leds::SysTick();
Timer::SysTick();
SPI::SysTick();
UART::SysTick();
}
inline void SYSTEM_TICK_100MS(){ // системные тики =100 мс
Leds::Tick100ms();
Timer::Tick100ms();
SPI::Tick100ms();
UART::Tick100ms();
}

Хотелось бы список модулей (Leds,Timer,SPI,UART) записывать только один раз во избежание несогласованности, и чтобы он потом развертывался в текст выше (или нечто подобное, но обязательно статически во время компиляции, оверхед динамических вызовов в процессе работы с использованием RTTI недопустим). Как это сделать на С++ (для конкретности - в Tasking C++ для C166)?

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru