Сокращение повторения кода при реализации макроса _BV () - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь реализовать макрос _BV () в стиле Arduino для другого микроконтроллера, используя программирование на Си. При использовании с номером контакта он возвращает битовую маску, связанную с битом.

#define _BV(bit)    (1UL << (bit))

Например: - _BV (PF0) дает (1 << PF0) </p>

Но проблема возникает при определении битовых полей. Если я начну определять каждую битовую позицию, используя символические константы, это в конечном итоге будет повторять много кода, как показано ниже

enter image description here

Я попытался проверить реализацию AVR на то же самое по следующей ссылке

avrpins.h

Это реализовано в C ++. Есть ли эффективный способ решения этой проблемы в C?

...