Цитата(MrYuran @ Mar 5 2011, 13:35)

И что мешает вашему макросу ...?
Да, в макросизации нужно идти до конца!
Я не знаю, что именно хочет автор, но сам делаю что-то подобное присвоением типам структур условных номеров через enum, ну и конечно же есть тяжелое место в коде - по условному номеру структуры выполнить требуемые действия - "жосткий" switch, не красящий код (см ниже). Врагу не пожелаешь

Код
char GetRecordParametersError(uchar area, uchar index)
{ switch (area)
{
#define BACKUP_AREA(type_name,var_name,qty_name, mask,show_name) case type_name: \
record_parameters.eeprom_offset=OFFSET(EEPROM_TYPE,var_name[index]); \
record_parameters.bytes_qty=sizeof(type_name##_TYPE); \
record_parameters.ram_address=(uchar *) &var_name; \
record_parameters.checksum_address=&var_name.checksum; \
break;
#include "k__areas.h"
#undef BACKUP_AREA
default: return WRONG_AREA;
}
if (index>area_qty[area]-1) return WRONG_AREA_INDEX;
else return 0;
}
Уходя, оставьте свет...