3

我有个问题

如果我们有以下情况会发生什么:

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

void test( states x ) ;

使用功能测试时,如果我像下面这样使用它会发生什么:

test(6);

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

4

2 回答 2

2

大多数 C 编译器将 enum 有效地视为 int 。它们只是使代码更具可读性的语法糖。在您的情况下, 6 将被传递给函数并且函数必须处理它。

于 2014-06-04T10:51:39.823 回答
1

[C用]

如果做

test(6);

6将被传递给test()(as enums are (视为) ints) 并且它应该被函数的输入验证捕获。


更新:

输入验证不会自动完成。它需要显式编码。

于 2014-06-04T10:48:48.307 回答