无法使用typedef枚举来存储状态信息

时间:2015-08-06 05:04:54

标签: xc16

  

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

typedef enum NodeState currentNodeState;

然后我在set accessor中使用它:

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

导致以下编译器错误:Node_IO.c:168:22:错误:预期标识符或'('before'='令牌 有关错误消息的原因的任何建议 吉姆

1 个答案:

答案 0 :(得分:0)

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

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。