2011-01-11 21 views
22

olarak nasıl iletilir?ENUM işlev argümanı olarak C

fun (CyclicPrefixType_t cpType) ; 

fonk beyanıdır:

void fun(CyclicPrefixType_t cpType); 

Lütfen yardım

typedef enum 
{ 
    NORMAL = 0,   
    EXTENDED    

}CyclicPrefixType_t; 

CyclicPrefixType_t cpType; 

Ben bağımsız değişken olarak alır bir işlevi gerekir. Bunun doğru olduğunu düşünmüyorum. oldukça fazla

Teşekkür

+7

Neden bunun yanlış olduğunu düşünüyorsunuz? Derleyiciniz size ne anlattı? –

+0

Bana göre iyi görünüyor; derlemeyi denediniz mi? –

+2

Yazma isimlerini '_t' ile kullanmayın, bunlar genellikle saklıdır, özellikle POSIX tarafından. Ama diğerlerinin dediği gibi, prototipiniz tamam. –

cevap

22

tam bunu nasıl: beklendiği gibi

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

Bu (bu durumda 31415) EXTENDED değerini çıkarır.

7

aşağıdakiler de (biraz karıştırır ...) FWIW

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

Anlaşılan o ki bir legacy C thing var, çalışır.

+0

Bu örnekte, 'CyclicPrefixType_t', bir tür değil, yalnızca“ enum ”unun adıdır - bu yüzden biraz farklıdır. – cerr