【问题标题】:Can't use a typedef enum to store state information不能使用 typedef 枚举来存储状态信息
【发布时间】:2015-08-06 05:04:54
【问题描述】:

嗨 - 我正在使用带有 Microchip dsPIC33F CPU 的 XC16 C 编译器。我正在尝试使用枚举来存储设备的状态。我有访问者来获取和设置设备状态。状态被(或应该)捕获在一个名为“currentNodeState”的变量中,该变量声明如下: `

typedef enum NodeState currentNodeState;

然后我在 set 访问器中使用它:

void SetNodeState(NodeState state)
{
  currentNodeState = state;
}

这会导致以下编译器错误:Node_IO.c:168:22: error: expected identifier or '(' before '=' token 关于错误消息原因的任何建议 吉姆

【问题讨论】:

  • 问题是什么?你不能在 typedef、enum 中存储任何东西。

标签: xc16


【解决方案1】:

您需要定义枚举的合法值。

Cplusplus 有一篇关于枚举的文章(靠近页面底部):http://www.cplusplus.com/doc/tutorial/other_data_types/

这是我的代码修改后的示例:

typedef enum
{
    ADJUST_NONE,
    ADJUST_FINE,
    ADJUST_COARSE,
    ADJUST_INVALID
} adjustment_state_t;

adjustment_state_t ADJUSTER_StateUpdate(adjustment_state_t currentState,
                                        uint8_t thresholdViolation);

函数的有效输入是枚举中的任何值。 ADJUST_NONE = 0,并且每个后续值都比上一个高 1。这使得 ADJUST_INVALID = 3。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-10
    • 2011-03-28
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 2011-08-19
    • 2021-10-12
    • 1970-01-01
    相关资源
    最近更新 更多