Number of elements in an enum Number of elements in an enum c c

Number of elements in an enum


If you don't assign your enums you can do somethings like this:

enum MyType {  Type1,  Type2,  Type3,  NumberOfTypes}

NumberOfTypes will evaluate to 3 which is the number of real types.


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).