web-dev-qa-db-ja.com

CでENUMを関数の引数として渡す方法

宣言された列挙型があります。

typedef enum 
{
   NORMAL = 0,           
   EXTENDED              

}CyclicPrefixType_t;

CyclicPrefixType_t cpType;  

これを引数として取る関数が必要です:

fun (CyclicPrefixType_t cpType) ;  

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

void fun(CyclicPrefixType_t cpType);

助けてください。私はそれが正しいとは思わない。

ありがとう

25
user437777

それはほとんど正確にあなたがそれを行う方法:

#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)の値が期待どおりに出力されます。

29
paxdiablo

以下も機能します、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;
}

どうやら レガシーCのもの です。

8
rogerdpack