8

If I have an anonymous enum, is there any way to pass a value of that type to a function? For example,

typedef struct {
    enum { On, Off } status;
    int max_amps;
} SWITCH;

void make_switches(){
    SWITCH switch1 = createSwitch( On, 15 );
    SWITCH switch2 = createSwitch( Off, 20 );
}

SWITCH* createSwitch( ??? status, int max_amps ){
    SWITCH* new_switch = malloc( sizeof( SWITCH ) );
    new_switch->status = status;
    new_switch->max_amps = max_amps;
    return new_switch;
}

I would like to pass the value of the anonymous enum into the createSwitch() function. Is there any way to do this?

Tyler Durden
  • 11,156
  • 9
  • 64
  • 126

1 Answers1

10

As others have suggested, you can simply use an int in the place of ???.

This is because as per 6.7.2.2/3 of C11 standard (Committee draft):

The identifiers in an enumerator list are declared as constants that have type int and may appear wherever such are permitted.

P.W
  • 26,289
  • 6
  • 39
  • 76