我正在从字节流中读取一个值,并想断言该值在枚举范围内。我想知道是否有比下面的方法更通用的方法。

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/

10-11 18:19