0

嗨 - 我正在使用带有 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 关于为什么出现错误消息 Jim 的任何建议

4

1 回答 1

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。

于 2016-05-25T20:02:23.643 回答