Подтвердить что ты не робот

Как передать ENUM в качестве аргумента функции в C

У меня есть перечисление, объявленное как:

typedef enum 
{
   NORMAL = 0,           
   EXTENDED              

}CyclicPrefixType_t;

CyclicPrefixType_t cpType;  

Мне нужна функция, которая принимает это как аргумент:

fun (CyclicPrefixType_t cpType) ;  

Объявление func:

void fun(CyclicPrefixType_t cpType);

Пожалуйста, помогите. Я не думаю, что это правильно.

Спасибо

4b9b3361

Ответ 1

Это очень точно, как вы это делаете:

#include <stdio.h>

typedef enum {
    NORMAL = 31414,
    EXTENDED
} CyclicPrefixType_t;

void func (CyclicPrefixType_t x) {
    printf ("%d\n", x);
}

int main (void) {
    CyclicPrefixType_t cpType = EXTENDED;
    func (cpType);
    return 0;
}

В этом случае ожидается значение EXTENDED (31415 в данном случае).

Ответ 2

Также работает FWIW (что немного смущает...)

#include <stdio.h>

enum CyclicPrefixType_t {
    NORMAL = 31414,
    EXTENDED
};

void func (enum CyclicPrefixType_t x) {
    printf ("%d\n", x);
}

int main (void) {
    enum CyclicPrefixType_t cpType = EXTENDED;
    func (cpType);
    return 0;
}