Vit (25.08.2009 12:48, просмотров: 112) ответил Vladimir Ljaschko на Где-то значение задавать надо, и желательно, чтобы это "где-то" было в параметрах макроса - для обеспечения идеальной читаемости текста. Вопрос именно так - как присвоить этому значению человеческое имя.
Что такое "определяем области EEPROM"? Зачем вообще массивы пихать в структуры? Ладно, на безрыбье, но всё-таки зачем? А ещё потом с выравниванием можно наиграться...
Я бы не экономил пару байт описания, тем более их можно положить во FLASH
typedef ... SETUP_TYPE;
typedef ... STATISTIC_TYPE;
typedef struct EE_DEF{
int setup_qty;
int statistic_qty;
SETUP_TYPE *varSETUP;
STATISTIC_TYPE *var;
}EE_DEF;
#define EE_ARRAY_DEFINE(SETUP_QTY,STATISTIC_QTY) \
SETUP_TYPE EE_VarSetup[SETUP_QTY]; \
STATISTIC_TYPE EE_Vars[STATISTIC_QTY]; \
const /*__flash */ EE_DEF EE_Arr = { \
.setup_qty = SETUP_QTY, \
.statistic_qty = STATISTIC_QTY, \
.varSETUP = EE_VarSetup, \
.var = EE_Vars \
}/*;*/
#define EEPROM_ARRAY_SETUP_QTY_DEFAULT 1
#define EEPROM_ARRAY_STATISTIC_QTY_DEFAULT 3
#define EE_ARRAY_DEFAULT_SET() EE_ARRAY_DEFINE(EEPROM_ARRAY_SETUP_QTY_DEFAULT,EEPROM_ARRAY_STATISTIC_QTY_DEFAULT)
Или имя добавить
#define EE_ARRAY_SET(NAME,SETUP_QTY,STATISTIC_QTY) \
SETUP_TYPE EE_##NAME##_VarSetup[SETUP_QTY]; \
STATISTIC_TYPE EE_##NAME##_Vars[STATISTIC_QTY]; \
const /*__flash */ EE_DEF EE_##NAME##_Arr = { \
.setup_qty = SETUP_QTY, \
.statistic_qty = STATISTIC_QTY, \
.varSETUP = EE_##NAME##_VarSetup, \
.var = EE_##NAME##_Vars \
}/*;*/