Я пытаюсь реализовать макрос _BV () в стиле Arduino для другого микроконтроллера, используя программирование на Си. При использовании с номером контакта он возвращает битовую маску, связанную с битом.
#define _BV(bit) (1UL << (bit))
Например: - _BV (PF0) дает (1 << PF0) </p>
Но проблема возникает при определении битовых полей. Если я начну определять каждую битовую позицию, используя символические константы, это в конечном итоге будет повторять много кода, как показано ниже
Я попытался проверить реализацию AVR на то же самое по следующей ссылке
avrpins.h
Это реализовано в C ++. Есть ли эффективный способ решения этой проблемы в C?