Вы не можете делать именно то, что просите, но вы можете делать некоторые вещи, которые почти так же хороши. Каждое из этих решений опирается на возможность устанавливать значения определенных членов enum.
Вы можете поместить все свои имена в одно перечисление:
enum every_e {
// common values
COMMON_LITERAL_0,
COMMON_LITERAL_1,
MAX_COMMON_LITERAL = COMMON_LITERAL_1,
// First set of extra values
FIRST_LITERAL_0 = MAX_COMMON_LITERAL+1,
FIRST_LITERAL_1,
FIRST_LITERAL_2,
// Second set of extra values
ANOTHER_LITERAL_0 = MAX_COMMON_LITERAL+1,
ANOTHER_LITERAL_1
};
Если вы хотите использовать различные типы перечислений, вы можете использовать тот же трюк:
enum common_e {
COMMON_LITERAL_0,
COMMON_LITERAL_1,
MAX_COMMON_LITERAL = COMMON_LITERAL_1
};
enum first_e {
FIRST_LITERAL_0 = MAX_COMMON_LITERAL+1,
};
enum another_e {
ANOTHER_LITERAL_0 = MAX_COMMON_LITERAL+1,
ANOTHER_LITERAL_1
};