将整数传递给具有枚举作为输入参数的函数

时间:2014-06-04 10:37:28

标签: c enums capl

我有一个问题

如果我们有以下内容会发生什么:

typedef enum  {s1=0,s2,s3} states ;

void test( states x ) ;

使用功能测试时,如果我按照以下方式使用它会发生什么:

test(6);

它应该映射到最近的枚举值,还是需要在函数实现中处理?

2 个答案:

答案 0 :(得分:2)

大多数C编译器将

枚举有效地视为int。它们只是语法糖,使代码更具可读性。在你的情况下,6将被传递给函数,函数必须处理它。

答案 1 :(得分:1)

[for C]

如果正在做

test(6);

6将传递给test()(因为enum s(被视为)int s)并且它将被函数的输入所困验证


<强>更新

输入验证不是自动完成的。它需要明确编码。