【问题标题】:How to pass ENUM as function argument in C如何在 C 中将 ENUM 作为函数参数传递
【发布时间】:2011-01-11 05:54:43
【问题描述】:

我有一个枚举声明为;

typedef enum 
{
   NORMAL = 0,           
   EXTENDED              

}CyclicPrefixType_t;

CyclicPrefixType_t cpType;  

我需要一个将其作为参数的函数:

fun (CyclicPrefixType_t cpType) ;  

func 声明是:

void fun(CyclicPrefixType_t cpType);

请帮忙。我不认为这是正确的。

谢谢

【问题讨论】:

  • 你为什么认为这是不正确的?你的编译器告诉你什么?
  • 对我来说还不错;你试过编译吗?
  • 不要在末尾使用带有_t 的类型名,这些通常是保留的,特别是在 POSIX 中。但正如其他人所说,你的原型是好的。

标签: c function enums


【解决方案1】:

这几乎是正是你是怎么做的:

#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)的值。

【讨论】:

    【解决方案2】:

    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

    【讨论】:

    • 在这个例子中,CyclicPrefixType_t 实际上不是一个类型,而只是enum 的名称——所以它有点不同。
    猜你喜欢
    • 1970-01-01
    • 2020-02-10
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    相关资源
    最近更新 更多