У меня есть список определений: MASTER
, SLAVE0
, SLAVE1
, ... SLAVE9
для управления тем, какой массив аудиоданных запрограммирован в микроконтроллер.Микро может содержать не более одного звукового файла, поэтому я включил следующие определения в начало моего файла main.c:
#define MASTER
#define SLAVE0
#define SLAVE1
....
#define SLAVE9
Затем я пишу следующее в моем аудио массиве:
#if defined(MASTER)
uint8_t sound[4096] PROGMEM = {127,126, ... }
#elif defined(SLAVE0)
uint8_t sound[4096] PROGMEM = {126,128, ... }
....
#else
#ERROR "One of MASTER-SLAVE9 must be defined!"
#endif
Человек, желающий скомпилировать, должен пройти и закомментировать одну и только одну из #define
строк.Это не только утомительно, но и подвержено ошибкам.Итак, я ищу, чтобы упростить процесс.Были бы полезны любые указатели для любой из следующих задач:
- Как я могу проверить список макросов на наличие одного и только одного из этих параметров?Простой
if defined(MASTER) && !(defined(SLAVE0) || defined(SLAVE1) ...)
потребовал бы 11 таких тестов, каждый с 11 слегка различающимися условиями.Это единовременные расходы, но это некрасиво.Такое ощущение, что это может быть общей потребностью, и что должен быть лучший способ. - Как я могу упростить процесс компиляции?Я использую AVRStudio с компиляцией WinAVR t0.У него есть опция экспорта файла экспорта, но у меня нет опыта работы с ним.Я застрял, делая это на Windows.Идеальный процесс - собрать все 11 конфигураций в одну команду, и тогда я смогу пройтись и запрограммировать каждую из них на микроконтроллер по отдельности.Нынешний процесс сборки, не совсем идеальный, включает редактирование исходного кода каждый раз, когда я хочу построить, и переименование / перемещение выходного файла.