2011-01-11 73 views
22

私は以下のように宣言されたenumを持っています。Cで関数の引数としてENUMを渡す方法

typedef enum 
{ 
    NORMAL = 0,   
    EXTENDED    

}CyclicPrefixType_t; 

CyclicPrefixType_t cpType; 

私は、引数としてこれを取る関数が必要になります。

fun (CyclicPrefixType_t cpType) ; 

FUNC宣言は次のとおりです。

void fun(CyclicPrefixType_t cpType); 

助けてください。私はそれが正しいとは思わない。正確あなたがそれを行う方法はかなり

おかげ

+7

なぜそれが間違っていると思いますか?あなたのコンパイラはあなたに何を伝えましたか? –

+0

私はうまく見えます。あなたはそれをコンパイルしようとしましたか? –

+2

末尾に '_t'の型名を使用しないでください。通常はPOSIXによって予約されています。しかし、他の人が言うように、あなたのプロトタイプは大丈夫です。 –

答えて

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

予想通りこれはEXTENDED(この場合は31415)の値を出力します。

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です。

+0

この例では、 'CyclicPrefixType_t'は実質的にa型ではなく、単に' enum'の名前です - それで少し違います。 – cerr

関連する問題