2011-01-11 10 views
22

Ich habe eine enum deklariert als;Wie übergeben ENUM als Funktion Argument in C

typedef enum 
{ 
    NORMAL = 0,   
    EXTENDED    

}CyclicPrefixType_t; 

CyclicPrefixType_t cpType; 

Ich brauche eine Funktion, die dies als Argument:

fun (CyclicPrefixType_t cpType) ; 

func Erklärung ist:

void fun(CyclicPrefixType_t cpType); 

Bitte helfen. Ich denke nicht, dass es korrekt ist.

Dank

+7

Warum denken Sie, dass das falsch ist? Was hat dein Compiler dir gesagt? –

+0

Sieht für mich gut aus; Hast du versucht es zu kompilieren? –

+2

Verwenden Sie keine Typnamen mit '_t 'am Ende sind diese normalerweise reserviert, insbesondere von POSIX. Aber wie die anderen sagen, ist dein Prototyp in Ordnung. –

Antwort

22

so ziemlich genau ist, wie Sie es tun:

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

Dies gibt den Wert von EXTENDED (31415 in diesem Fall), wie erwartet.

7

folgende Arbeiten auch, FWIW es ist ein legacy C thing (die etwas ... verwirrt)

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

Scheinbar.

+0

In diesem Beispiel ist 'CyclicPrefixType_t' nicht wirklich ein Typ, sondern nur der Name der' enum' - also ist es ein bisschen anders. – cerr

Verwandte Themen