Я пытаюсь разработать общий модуль UART для микроконтроллера PIC. То, что я пытаюсь сделать, это определить используемый UART, а затем препроцессор автоматически заменит его в других макросах (имена регистров).Замена макропроцессора препроцессора
Что-то вроде:
#define UART 5
#define UART_RXREG U ## UART ## RXREG
Это не работает, так как она расширяется до UUARTRXREG
вместо U5RXREG
.
Есть ли способ сделать это, или это просто невозможно?
Обратите внимание, что я не ищу простой конкатенации строк. Мне нужно, чтобы макрос UART сначала расширялся.
Он отлично работает, если вы используете препроцессор, который поддерживает его. –
Почему бы не использовать макрос с параметром? –
@ IgnacioVazquez-Abrams: Какой препроцессор поддерживает его? С 'gcc -E',' UART_RXREG' расширяется до 'UUARTRXREG'. Я считаю, что это обязательное поведение. –