如何在C中使用枚举类型结构?

时间:2018-05-09 11:22:20

标签: c struct teensy

我正在尝试设置诺基亚液晶显示屏以关闭所有像素,所有像素开启,反向模式开启和正常模式开启,具体取决于用户按下哪个按钮。我将所有代码完全分开,用于设置LCD屏幕的模式。这是因为它们显示为枚举类型结构,我不熟悉这两种概念。结构是:

typedef enum lcd_display_mode_t {
    lcd_display_all_off = 0b000,
    lcd_display_all_on  = 0b001,
    lcd_display_normal  = 0b100,
    lcd_display_inverse = 0b101,
} lcd_display_mode_t;

我最好的猜测是,作为枚举类型,我只需输入:

if SWITCH X IS ON{
    lcd_display_mode_t = 0;
}

将显示模式设置为lcd_display_all_off。在这种情况下,这是结构的正确使用吗?如果没有,我会键入什么来设置显示模式?

1 个答案:

答案 0 :(得分:3)

枚举不是结构。使用枚举存储二进制数据是一个坏主意。人们会得到各种奇怪的副作用,例如使用的类型是有符号的int - 这反过来又完全不适合用于它的硬件相关编程。另外,二进制文字甚至不是标准C。

请注意,typedef使lcd_display_mode_t成为一种类型,而不是变量。编写代码的人有点困惑,只需编写typedef enum { ... } lcd_display_mode_t;即可。

他们打算你使用这样的代码:

lcd_display_mode_t mode;
...
mode = lcd_display_all_off;