如何验证从文件读取的枚举值?

时间:2019-04-17 09:31:18

标签: c enums

如果我从C语言的文件中读取二进制值,则可以通过循环遍历枚举本身并验证该整数是这些值之一来手动检查应该是枚举成员的整数。这似乎是一个乏味的过程。如果我只是将读取的值强制转换为枚举,那么我假设如果值无效,则会发生某种运行时错误。

有没有比手动检查循环更好的验证枚举的方法?

请注意,在我的情况下,所涉及的枚举不一定具有连续的值,因此最小/最大检查不是解决方案。

2 个答案:

答案 0 :(得分:4)

在C中,所有master实际上都是整数类型。

因此,该整数类型的任何值对于您的enum是有效值。

如果小心设置enum标签,使其连续(默认是从0开始连续),这是检查文件中的值是否在该范围内的简单情况。否则,这很乏味。

答案 1 :(得分:4)

2019-04-17 11:48:44,230 | INFO | [1] | ? ? ? - abc 在C语言中的工作方式类似于整数,因此可以通过任何类型的读取函数采用指针将其强制为任何值,或者直接将其强制转换为整数类型。

如果枚举仅具有顺序值,则某些程序的枚举具有enum枚举值。这些值可以具有显式值,也可以具有始终从max开始并依次上升的隐式值。这样,他们可以只检查值在允许的范围内(0到0),而不必检查每个允许的值。

max - 1