2011-01-11 138 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

相关问题