Я пишу прошивку в C для встроенного процессора. Я хочу иметь всю конфигурационную информацию в одном файле заголовка config.h. Это вызывает проблемы с инициализацией ADC, где простые #defines не будут делать трюк. Сейчас код примерно так:с использованием макросов для конфигурации
config.h
#define NUMBER_OF_POTS 1
#define POT_1_CHANNEL 27
adc.c
#define MAKE_CSS(channel) _CSS##channel
#define CALL_MAKE_CSS(channel) MAKE_CSS(channel)
void initialize_adc() {
CALL_MAKE_CSS(POT_1_CHANNEL);
}
То, что я хочу сделать, это не должны касаться adc.c, если я изменю конф. ч к:
#define NUMBER_OF_POTS 2
#define POT_1_CHANNEL 27
#define POT_2_CHANNEL 29
adc.c должна просто автоматически добавить второй CALL_MAKE_CSS
с некоторым макро обманом.
У меня вопрос: есть ли уловка, которая дает вам возможность цикла с макросом?
Thanks,
Steve.
Я бы сделал массив pots [] статическим в adc.c. Зачем создавать глобальную переменную и новый файл config.c? –
Вы также можете определить «int pots [] = {..}» и сделать NUMBER_OF_POTS расчет времени компиляции: #define NUMBER_OF_POTS (sizeof pots/sizeof (pots [1])) –
Возможно, новый файл не требуется; имеет ли смысл сделать массив глобальным, зависит от того, где еще он может быть использован, и у нас недостаточно кода, чтобы это знать. Однако вполне правдоподобно думать, что могут быть и другие места, где он будет использоваться; одинаково, все они могут быть в adc.c. –