Number of elements in an enum
I don't believe there is. But what would you do with such a number if they are not sequential, and you don't already have a list of them somewhere? And if they are sequential but start at a different number, you could always do:
enum blah { FIRST = 128, SECOND, THIRD, END};const int blah_count = END - FIRST;
Old question, I know. This is for the googlers with the same question.
You could use X-Macros
Example:
//The values are defined via a map which calls a given macro which is defined later#define ENUM_MAP(X) \ X(VALA, 0) \ X(VALB, 10) \ X(VALC, 20)//Using the map for the enum decl#define X(n, v) [n] = v,typedef enum val_list { ENUM_MAP(X) //results in [VALA] = 0, etc...} val_list;#undef X//For the count of values#define X(n, v) + 1int val_list_count = 0 + ENUM_MAP(X); //evaluates to 0 + 1 + 1 + 1#undef X
This is also transparent to an IDE, so auto-completes will work fine (as its all done in the pre-processor).