2011-01-11 13 views
22

Tengo una enumeración declarada como;Cómo pasar ENUM como argumento de función en C

typedef enum 
{ 
    NORMAL = 0,   
    EXTENDED    

}CyclicPrefixType_t; 

CyclicPrefixType_t cpType; 

Necesito una función que toma esto como un argumento:

fun (CyclicPrefixType_t cpType) ; 

declaración func es:

void fun(CyclicPrefixType_t cpType); 

por favor ayuda. No creo que sea correcto

Gracias

+7

¿Por qué crees que es incorrecto? ¿Qué te dijo tu compilador? –

+0

me parece bien; ¿Has intentado compilarlo? –

+2

No use nombres de tipos con '_t'; al final, generalmente se reservan, en particular, mediante POSIX. Pero como dicen los demás, tu prototipo está bien. –

Respuesta

22

Eso es casi exactamente cómo lo hace:

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

Esto da salida al valor de EXTENDED (31.415 en este caso) como se esperaba.

7

las siguientes obras también, Fwiw (que confunde un poco ...)

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

Al parecer es un legacy C thing.

+0

En este ejemplo, 'CyclicPrefixType_t' no es realmente un tipo, sino simplemente el nombre del' enum', por lo que es un poco diferente. – cerr

Cuestiones relacionadas