kilkennycat 0 2 января, 2016 Опубликовано 2 января, 2016 (изменено) · Жалоба Суть: Имеем кучу дефайнов, вида: #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 что такое сделать, что совместит удобство разработки как со структурами (то есть вызов точкой списка элементов) с функционалом дефайнов (то есть с подстановкой значений)? нашел небольшое решение: структуру объявить константой. В этом случае код становится несколько меньше, озу не тратится. Изменено 2 января, 2016 пользователем KilkennyCat Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
theBMV 0 11 февраля, 2016 Опубликовано 11 февраля, 2016 · Жалоба А чем простой enum без typedef и имени не нравится? Сделайте префикс всем именам и после набора префикса нажимайте ctrl+пробел в mplabx. Ещё удобство: если сделать переменную типа enum и использовать её в switch case, то компилятор предупредит об отсутствующих кейсах, если не для всех полей enum'а они сделаны Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 20 февраля, 2016 Опубликовано 20 февраля, 2016 · Жалоба Если вам #define a 0x01 тяжело запомнить, а uuu.a кажется удобнее, то и пишите #define uuu.a 0x01 ))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться