Как передать ENUM в качестве аргумента функции в C - PullRequest
25 голосов
/ 11 января 2011

У меня есть enum, объявленный как;

typedef enum 
{
   NORMAL = 0,           
   EXTENDED              

}CyclicPrefixType_t;

CyclicPrefixType_t cpType;  

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

fun (CyclicPrefixType_t cpType) ;  

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

void fun(CyclicPrefixType_t cpType);

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

Спасибо

Ответы [ 2 ]

29 голосов
/ 11 января 2011

Это в значительной степени точно как вы это делаете:

#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), как и ожидалось.

7 голосов
/ 27 марта 2014

Следующее также работает, 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;
}

Очевидно, это устаревшая вещь C .

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