2011-01-11 15 views
22

Ho un enum dichiarato come;Come passare ENUM come argomento di funzione in C

typedef enum 
{ 
    NORMAL = 0,   
    EXTENDED    

}CyclicPrefixType_t; 

CyclicPrefixType_t cpType; 

Ho bisogno di una funzione che prende questo come un argomento:

fun (CyclicPrefixType_t cpType) ; 

dichiarazione func è:

void fun(CyclicPrefixType_t cpType); 

prega di aiuto. Non penso sia corretto

Grazie

+7

Perché pensi che sia errato? Cosa ti ha detto il tuo compilatore? –

+0

Mi sembra a posto; hai provato a compilarlo? –

+2

Non utilizzare nomi di tipo con '_t' alla fine questi sono solitamente riservati, in particolare da POSIX. Ma come dicono gli altri, il tuo prototipo è ok. –

risposta

22

che è praticamente esattamente come lo fate:

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

Emette il valore di EXTENDED (31415 in questo caso) come previsto.

7

le seguenti opere anche, FWIW (che confonde un po '...)

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

A quanto pare si tratta di un legacy C thing.

+0

In questo esempio, 'CyclicPrefixType_t' non è esattamente un tipo ma solo il nome di' enum' - quindi è un po 'diverso. – cerr

Problemi correlati