【问题标题】:Better enums in C (Arduino)C(Arduino)中更好的枚举
【发布时间】:2014-01-03 14:07:54
【问题描述】:

我认为下面是在 C 中实现枚举的一种巧妙方法。

struct states
{
  enum
  {
    waitPackage,
    waitReference,
    waitData
  };

}state;

这增加了一些类型安全性,我还可以通过 state.XXX 访问每个成员,我认为这比添加枚举项的所有名称要简洁得多,并以 state_XXX 之类的方式访问成员。或者你怎么看,我错过了什么?

但是,我不能在 switch-case 语句中使用上面的枚举,因为编译器说状态不是常量。 有没有办法告诉编译器我不打算更改枚举的成员,它可以在 switch-case 中使用?或者另一种方式来完成我想要的?

在 C++ 中,我通过将枚举放在命名空间中来解决它,但这不是一个选项。

【问题讨论】:

  • arduino 是 C++,所以你可以使用命名空间和类

标签: c struct enums arduino


【解决方案1】:

C 中的类型始终是全局的,从不嵌套。所以没有办法拥有作用域常量。

因此,:: 符号在 C 中是不允许的,它不是语法的一部分。例如,您的常量 waitPackage 随处可见。

【讨论】:

    猜你喜欢
    • 2010-11-26
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多