变量有3个状态(其中一个状态也变量)

时间:2018-01-17 15:03:51

标签: c types

我觉得这是一个棘手的问题,但我会尽力以最好的方式解释它。

我希望变量能够假设3个可能值中的一个,其中两个是特定的"标志值" (STATE1STATE2),第三个是数字unsigned long

所以,例如,我可以有一个这样的数组:

{STATE1, 3984902, 20304, STATE2, STATE1, 3021289129}

是否有可能在C中做这样的事情?

1 个答案:

答案 0 :(得分:3)

您可以使用具有两个字段的结构,而第一个字段将指示其中一个自定义离散状态,其中一个额外状态将指示另一个字段将用作数值:

typedef enum 
{
    STATE1, 
    STATE2,
    STATE3
} dstate_t;

typedef struct
{
    dstate_t dstate;   // Discrete state
    unsigned long val;  // The value for STATE3
} state_t;

然后你可以拥有一个state_t数组,例如

{{STATE1, 0}, {STATE3, 3984902}, {STATE3,20304}, {STATE2, 0}, {STATE1, 0}, {STATE3,3021289129}}