Объедините макроопределение, чтобы получить множественное определение одновременно [avr C++]

Извините за недостаток знаний о коде препроцессора и определении макросов, но я пытаюсь работать с макросами #define, чтобы сделать мой код более эффективным. Я хочу разработать схему управления драйвером для 1-проводного цифрового термометра. Моя цель - получить предварительное определение регистров портов и выводов для повторного использования в моей библиотеке avr, и я хотел бы сделать все эти предварительные определения через макросы. Я объясню лучше:

Я хотел бы иметь функцию определения, как это:

#define (port, pin)

и использовать параметры порта и вывода для определения других основных макросов, таких как:

#define DRIVER_PORT PORT##port
#define DRIVER_PIN PIN##port##pin
#define DRIVER_DDR DDR##port

Итак, с этого момента я смогу использовать значение DRIVER_PORT для управления выводами портов ввода / вывода /high-z, DRIVER_PIN для чтения значений портов и так далее...

Погуглив, я создал этот нерабочий код:

[...]
#define define_pin(port,pin) { \
   #define DRIVER_PORT PORT##port \
   #define DRIVER_PIN PIN##port##pin \
   #define DRIVER_PINR PIN##port \
   #define DRIVER_DDR DDR##port \
}
[...]

1 ° вопрос: возможно ли получить то, что я преследую? 2° вопрос: если да, то какой правильный и лучший метод для этого?

Заранее спасибо за помощь!

1 ответ

Привет, вы не можете сделать это в C++ или в C, а также. В C++, чтобы избежать такого определения макросов и его расширения во время компиляции, он ввел встроенный метод, который намного проще в использовании. Лучше использовать встроенный метод вместо макросов в C++.

Другие вопросы по тегам