Есть ли способ объявить аргумент функции для получения анонимного перечисления? - PullRequest
8 голосов
/ 12 апреля 2019

Если у меня есть анонимное перечисление, есть ли способ передать значение этого типа в функцию?Например,

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;
}

Я бы хотел передать значение анонимного перечисления в функцию createSwitch().Есть ли способ сделать это?

1 Ответ

10 голосов
/ 12 апреля 2019

Как предлагали другие, вы можете просто использовать int вместо ???.

Это потому, что согласно 6.7.2.2 / 3 из C11 стандарт (проект комитета):

Идентификаторы в списке перечислителя объявляются как константы типа int и могут появляться везде, где это разрешено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...