This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

enumeration with error when a value is used twice

Hello everyone,

is it possible to test an enum for each value just appearing once.
Example:

enum foo
{
   BAR = 0,
   BAZ = 0
};

Is it possible to create an error or warning with this?

Thanks for your answers
Alexander

  • But there is nothing erroneous about it as far as the language is concerned - so nothing to report.

  • I just wondered if there was any compiler specific flag.

  • Just as there should be compiler flags to warn if any integer gets the value 123456?

    If you want non-overlapping enumeration values, the natural way is to write:

    enum {
        Ben,
        John,
        Charlie,
    }
    


    or with an initial start value:

    enum {
        Red = 1,
        Green,
        Blue
    };
    

    If you on the other hand decides to explicitly assign a numeric value to multiple entries, then it's 100% your task to decide what values to assign. And consider the implications of the selected numerical values.

    The language do not care about overlapping numerical values, just as preprocessor-based code:

    #define VOLTAGE 1
    #define CURRENT 2
    #define TEMPERATURE 3
    


    wouldn't care if two #define expands to the same numerical value.

    If you have a problem with overlapping numerical values, then the obvious choice is to stop assign explicit values and let the compiler auto-enumerate.