按下按钮时增加枚举值

时间:2014-03-05 05:16:43

标签: c++ c arduino

我有以下功能有枚举。如果按下按钮,我想增加值。

typedef enum {
  DATE_TIME,
  COORDINATE,
  WINDSPEED,
  POSITIONTRACK,
  DISPAY_PARAMETER,
  SET_PARAMETER,
  DISPLAY_TYPE_MAX
}DISPLAY_SCREEN_TYPE;
DISPLAY_SCREEN_TYPE display_screen_type=DATE_TIME;

button=check_key();
if(button==RIGHT)
display_screen_type++;

我在编译时收到错误消息。

error: no 'operator++(int)' declared for postfix '++', trying prefix operator instead
error: no match for 'operator++' in '++display_screen_type'

这是我的实际代码语法 CODE discription

2 个答案:

答案 0 :(得分:0)

你到底想要完成什么?即使可以在编译器中使用int创建enum,尝试在screen_type变量上使用增量运算符(++)也是有意义的吗?如果屏幕类型为DISPLAY_TYPE_MAX且按下右键,应该会发生什么?

可以强制编译器接受您的enum / int转换,但这样做会使代码更难阅读。

enum的目的是将变量的值限制为枚举所包含的值。它几乎就像创建一个新的变量类型,并声明该类型仅限于某组值。从这个意义上讲,enum并不是真正意义上的数学值(如int),因此在++上使用switch并不合理。

作为替代方案,我建议使用{{1}}或只是编写一个函数来执行右键操作。

答案 1 :(得分:0)

不允许枚举值具有算术运算。它是一个数值有限的集合。

虽然你可以在c11中声明枚举的基础类型来操纵它。但是arduino的avr编译器可能不支持它。

您可以将枚举更改为int / byte类型,并将枚举值定义为整数值。

#define DATE_TIME (0)
// other values. 
int display_type;