【问题标题】:Enumeration type check枚举类型检查
【发布时间】:2013-03-20 12:18:45
【问题描述】:

我有一个函数可以获取预定义的特定枚举类型的操作数。出于安全原因,我希望该函数测试操作数是否属于特定的枚举类型。我该怎么做?

【问题讨论】:

  • 你可以针对所有 enms 的域做测试用例
  • C 和 C++ 与此不一样。所以首先你必须决定你想要哪个。
  • 我在 arduino 工作,所以他们说这是一个带有 c/c++ 的系统,但是可以说 C 更好

标签: c++ c eclipse optimization arduino


【解决方案1】:

C 中的枚举只是一个整数,因此无法检查它是否属于特定的枚举类型。

【讨论】:

  • 是的,但在这种特定情况下,枚举用于传递这个整数,所以我认为这在这里有效。但如果不是我应该怎么做
【解决方案2】:

如果您的 enum 看起来像:

enum /* ... */
{
  V1,
  V2,
  /* ... */ 
  VN
};

你可以使用条件:

if (v < V1 || v > VN)
{
  /* invalid */
}

但是,如果您提供特定值,则必须检查每个值。宏可以帮助你一点。

关于这一点,标准上还有一个方面,它说,在:

enum /* ... */
{
  V1 = 0,
  V2 = 2,
};

1enum /*...*/ 类型的有效值。因此,您必须详细说明“枚举类型检查”对您意味着什么。

【讨论】:

  • 所以这就像如果我检查值在 0 和 maxValueOfEnum 之间,因为 c 处的枚举自动从 0 开始,如果枚举类型不“跳转”任何整数也没有问题跨度>
猜你喜欢
  • 2019-12-30
  • 2018-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-25
  • 2013-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多