2011-01-11 14 views
22

Mam enum zadeklarowane jako;Jak przekazać ENUM jako argument funkcji w C

typedef enum 
{ 
    NORMAL = 0,   
    EXTENDED    

}CyclicPrefixType_t; 

CyclicPrefixType_t cpType; 

muszę funkcję, która pobiera jako argument to:

fun (CyclicPrefixType_t cpType) ; 

deklaracja func wynosi:

void fun(CyclicPrefixType_t cpType); 

Proszę o pomoc. Nie sądzę, że to jest poprawne.

Dzięki

+7

Dlaczego uważasz, że jest to nieprawidłowe? Co powiedział ci twój kompilator? –

+0

Wygląda dla mnie dobrze; czy próbowałeś go skompilować? –

+2

Nie używaj nazw typów z '_t' na końcu, które zwykle są zarezerwowane, w szczególności przez POSIX. Ale, jak mówią inni, twój prototyp jest w porządku. –

Odpowiedz

22

to dość dużo dokładnie jak to zrobić:

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

ten wyprowadza wartość EXTENDED (31415 w tym przypadku), jak oczekiwano.

7

następujące prace również FWIW (co nieco dezorientuje ...)

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

Najwyraźniej jest to legacy C thing.

+0

W tym przykładzie 'CyclicPrefixType_t' nie jest typowo typu, ale tylko nazwa' enum' - więc jest nieco inny. – cerr

Powiązane problemy