我正在从字节流中读取一个值,并想断言该值在枚举范围内。我想知道是否有比下面的方法更通用的方法。
int nval = ReadValue();
Assert(nval);
bool Assert(nval)
{
if(nval == zero || nval == one || nval==two || (nval>=reserved_low && nval <= reserved_high))
return true;
return false
}
enum Foo
{
zero = 0,
one = 1,
two = 2,
reserved_low = 3,
reserved_high = 255,
}
最佳答案
不是在C++ 03中,否。
尽管您可以认识到,鉴于所有枚举值都在0到255之间,但是您的方式是最佳的(并且肯定是可读的),return !(nval & ~0xff);
可以完成此工作。
您可以使用switch
挤出更多性能,并在nval>=reserved_low && nval <= reserved_high
情况下比较default
。
关于c++ - 如何断言值是否在枚举范围内,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39078178/