2011-01-11 134 views
22

我有一個枚舉聲明爲;如何在C中傳遞ENUM作爲函數參數

typedef enum 
{ 
    NORMAL = 0,   
    EXTENDED    

}CyclicPrefixType_t; 

CyclicPrefixType_t cpType; 

我需要一個函數,以此爲論據:

fun (CyclicPrefixType_t cpType) ; 

FUNC聲明:

void fun(CyclicPrefixType_t cpType); 

請幫助。我不認爲這是正確的。

感謝

+7

你爲什麼認爲這是不正確的?你的編譯器告訴你什麼? – 2011-01-11 06:14:35

+0

對我來說看起來很好;你有試過編譯它嗎? – 2011-01-11 06:17:01

回答

22

這幾乎是究竟你怎麼做:

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

這個輸出(在這種情況下31415)的EXTENDED的價值預期。

7

下也適用,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; 
} 

顯然,這是一個legacy C thing

相關問題