0

我正在尝试将诺基亚 LCD 屏幕设置为关闭所有像素、打开所有像素、打开反向模式和打开正常模式,具体取决于用户按下的按钮。我已经完成了所有代码,用于设置 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。这是在这种情况下正确使用结构吗?如果没有,我会输入什么来设置显示模式?

4

1 回答 1

3

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

注意 typedef 是lcd_display_mode_t一个类型,而不是一个变量。写代码的人有点糊涂,只要写typedef enum { ... } lcd_display_mode_t;.

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

lcd_display_mode_t mode;
...
mode = lcd_display_all_off;
于 2018-05-09T11:28:16.757 回答