Перейти к содержанию
    

Что можно использовать удобное, как структуру, но функционирующее, как дефайн?

Суть:

Имеем кучу дефайнов, вида:

 

#define a  0x01
#define b  0x05
#define c  0x0A

 

Когда их мало, не так страшно. А вот много - уже не запомнить.

Но если пойти таким путем:

struct {
    unsigned char a; /* help */
    unsigned char b;
    unsigned char c;
} uuu = {0x01,0x05,0x0A}

 

то далее можно использовать в программе uuu.a, причем, установка точки после uuu вызывает список всех элементов, со справкой (ежели справка есть). Удобно. Очень. Но совершенно расточительно по ресурсам, ибо вся структура сохраняется как константы, и дальнейшее ее использование - вызов.

 

Enum тоже позволяет после точки вызвать список всех элементов:

 

typedef enum {
   a = 0x01,
   b = 0x05,
   c = 0x0A
} uuu;

 

но использование в дальнейшем uuu.a среда позволяет, а компилятор - нет.

 

Вот и вопрос: возможно ли в MPLAB X XC8 что такое сделать, что совместит удобство разработки как со структурами (то есть вызов точкой списка элементов) с функционалом дефайнов (то есть с подстановкой значений)?

 

 

нашел небольшое решение: структуру объявить константой. В этом случае код становится несколько меньше, озу не тратится.

Изменено пользователем KilkennyCat

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А чем простой enum без typedef и имени не нравится? Сделайте префикс всем именам и после набора префикса нажимайте ctrl+пробел в mplabx.

Ещё удобство: если сделать переменную типа enum и использовать её в switch case, то компилятор предупредит об отсутствующих кейсах, если не для всех полей enum'а они сделаны

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вам

#define a 0x01
тяжело запомнить, а
uuu.a
кажется удобнее, то и пишите
#define uuu.a 0x01
)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...