web-dev-qa-db-fra.com

Comment passer ENUM comme argument de fonction en C

J'ai un enum déclaré comme;

typedef enum 
{
   NORMAL = 0,           
   EXTENDED              

}CyclicPrefixType_t;

CyclicPrefixType_t cpType;  

J'ai besoin d'une fonction qui prend cela comme argument:

fun (CyclicPrefixType_t cpType) ;  

la déclaration func est:

void fun(CyclicPrefixType_t cpType);

Veuillez aider. Je ne pense pas que ce soit correct.

Merci

25
user437777

C'est à peu près exactement comment vous le faites:

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

Cela renvoie la valeur de EXTENDED (31415 dans ce cas) comme prévu.

29
paxdiablo

Ce qui suit fonctionne également, FWIW (qui confond légèrement ...)

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

Apparemment, c'est une chose C héritée .

8
rogerdpack