【问题标题】:Is there a way to declare a function argument to take an anonymous enum?有没有办法声明一个函数参数来获取匿名枚举?
【发布时间】:2019-04-12 03:39:27
【问题描述】:

如果我有一个匿名枚举,有没有办法将该类型的值传递给函数?例如,

typedef struct {
    enum { On, Off } status;
    int max_amps;
} SWITCH;

void make_switches(){
    SWITCH switch1 = createSwitch( On, 15 );
    SWITCH switch2 = createSwitch( Off, 20 );
}

SWITCH* createSwitch( ??? status, int max_amps ){
    SWITCH* new_switch = malloc( sizeof( SWITCH ) );
    new_switch->status = status;
    new_switch->max_amps = max_amps;
    return new_switch;
}

我想将匿名枚举的值传递给createSwitch() 函数。有没有办法做到这一点?

【问题讨论】:

  • 我相信您已经想到了这一点,但我的建议是将 enum 提升为全局命名类型。
  • 当然可以SWITCH *createSwitch(int status...)
  • 枚举值类似于整数,可以接受status为任意类型的整数
  • typeof(On) 替换??? 是一个非常糟糕的主意,原因有很多,其中最重要的一点是它没有在C 规范中提及。另见:stackoverflow.com/questions/12081502/typeof-operator-in-c
  • @user3386109:我想我是盲人;你在哪里看到typeof(On)

标签: c enums


【解决方案1】:

正如其他人所建议的,您可以简单地使用int 代替???

这是因为根据 6.7.2.2/3C11 标准(委员会草案):

枚举器列表中的标识符被声明为具有int 类型的常量,并且可以出现在任何允许的地方。

【讨论】:

    猜你喜欢
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2013-01-18
    相关资源
    最近更新 更多