我正在尝试构建一个具有特殊情况的大型静态查找表。一般来说,它需要向结构返回 3 个状态
typedef struct state{
unsigned short speed : 3;
unsigned short direction : 1;
unsigned short size : 1;
}STATE;
但它有特殊情况,这些情况只是简单地存储在短时间内,并且值是预定义的。我想使用联合,因为它是一张大桌子
typedef union instruction{
STATE state;
unsigned short rule;
}INSTRUCTION;
该表如下所示:
static const INSTRUCTION table[2][2] = {
{{STOP},{1,1,1}},
{{4,0,0},{JUMP}}
};
我遇到的问题是该表仅将联合中的第一个元素视为数据类型。我无法返回 STOP,因为它使停止的代码速度加快。如果我切换它,表格会忽略附加值。
有什么想法如何在不在我的结构中添加几个额外的标志的情况下从表中返回数据吗?
您需要使用指定的初始值设定项来初始化正确的联合成员:
static const INSTRUCTION table[2][2] = {
{{ .rule = STOP}, { .state = {1,1,1}}},
{{ .state = {4,0,0}},{ .rule = JUMP}}
};