我觉得这是一个棘手的问题,但我会尽力以最好的方式解释它。
我希望变量能够假设3个可能值中的一个,其中两个是特定的"标志值" (STATE1
和STATE2
),第三个是数字unsigned long
。
所以,例如,我可以有一个这样的数组:
{STATE1, 3984902, 20304, STATE2, STATE1, 3021289129}
是否有可能在C中做这样的事情?
答案 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}}