Je souhaite générer une énumération avec une macro X. L'enum doit augmenter en fonction de la taille de prev.X-macro enum basé sur la valeur précédente
Je possède ce
#define LIST
VAR(one, 0x02)
VAR(two, 0x02)
VAR(tree, 0x03)
et que vous voulez générer ce
enum{
one = 0x02 + 0,
two = 0x02 + one,
tree = 0x03 + two
}
mais cela ne fonctionne pas
#define VAR(NAME, SIZE) STORED_LOCATION_##NAME = SIZE + (STORED_LOCATION_##NAME-1)
enum{STORED_VARIABLES};
#undef VAR
Cela fonctionne, mais je chose, il peut être plus facile
#define LIST \
VAR(one ) STR(STORED_LOCATION )\
VAR(two ) PRE(one )\
VAR(tree ) PRE(two )\
VAR(fore ) PRE(tree )\
enum
{
one = 0x00,
two = 0x01 + one,
tree = 0x01 + two,
fore = 0x01 + tree,
};
#define STR(OFFSET) OFFSET,
#define PRE(NAME) sizeof(##NAME) + STORED_LOCATION_##NAME,
#define VAR(NAME) STORED_LOCATION_##NAME =
enum{STORED_VARIABLES};
#undef VAR
#undef PRE
#undef STR